@kdcloudjs/kdesign 1.5.4 → 1.5.7

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 +61 -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
@@ -1,12 +1,10 @@
1
1
  @import '../../style/themes/token.less';
2
2
 
3
3
  @timeline-prefix: '--@{kd-prefix}-c-timeline';
4
- @timeline-gap: 8px;
5
-
6
- // @timeline-dot-size: var(~'@{timeline-prefix}-dot-sizing',9px);
7
- @timeline-dot-size: 9px;
8
-
4
+ @timeline-gap: 8px;
9
5
 
6
+ @timeline-dot-size: var(~'@{timeline-prefix}-dot-sizing',9px);
7
+ // @timeline-dot-size: 9px;
10
8
 
11
9
  // color
12
10
  @timeline-finished-color: var(~'@{timeline-prefix}-finished-color',@color-theme);
@@ -17,7 +15,6 @@
17
15
  @timeline-label-color-text: var(~'@{timeline-prefix}-label-color-text',#666666);
18
16
  @timeline-content-color-text: var(~'@{timeline-prefix}-content-color-text',@color-text-primary);
19
17
 
20
-
21
18
  // font
22
19
  @timeline-content-font-size-small: var(~'@{timeline-prefix}-content-font-size',@font-size-small);
23
20
 
@@ -26,7 +23,7 @@
26
23
  @timeline-width: var(~'@{timeline-prefix}-sizing-width',1px);
27
24
 
28
25
  // spacing
29
- @timeline-item-padding-bottom: var(~'@{timeline-prefix}-spacing-padding-bottom',26px);
26
+ @timeline-item-padding-bottom: var(~'@{timeline-prefix}-spacing-padding-bottom',24px);
30
27
 
31
28
 
32
29
 
@@ -101,6 +101,24 @@
101
101
  普通组件内部自身层级应设置在0-100间
102
102
  */
103
103
  /* ----------- zIndex ——————---- end */
104
+ .node-hover-hover {
105
+ -webkit-transition: background-color var(--kd-c-tree-motion-duration, var(--kd-g-duration, 0.3s)), color var(--kd-c-tree-motion-duration, var(--kd-g-duration, 0.3s));
106
+ transition: background-color var(--kd-c-tree-motion-duration, var(--kd-g-duration, 0.3s)), color var(--kd-c-tree-motion-duration, var(--kd-g-duration, 0.3s));
107
+ }
108
+ .node-hover-hover:hover {
109
+ background-color: var(--kd-c-tree-node-color-backgroung-hover, var(--kd-g-color-hover, #f5f5f5));
110
+ cursor: pointer;
111
+ }
112
+ .node-selected {
113
+ background-color: var(--kd-c-tree-node-color-backgroung-checked, var(--kd-g-color-theme-3, #e3eeff)) !important;
114
+ color: var(--kd-c-tree-node-color-text-checked, var(--kd-g-color-theme, #5582f3));
115
+ }
116
+ .node-selected .kd-tree-node-title {
117
+ color: var(--kd-c-tree-node-color-text-checked, var(--kd-g-color-theme, #5582f3));
118
+ }
119
+ .node-selected .kd-tree-node-icon {
120
+ color: var(--kd-c-tree-node-color-text-checked, var(--kd-g-color-theme, #5582f3));
121
+ }
104
122
  .kd-tree {
105
123
  position: relative;
106
124
  overflow: auto;
@@ -136,6 +154,15 @@
136
154
  -ms-flex-align: center;
137
155
  align-items: center;
138
156
  }
157
+ .kd-tree-node-root .kd-spin-dot-spin {
158
+ border: none;
159
+ width: var(--kd-c-tree-expand-icon-loading-sizing-width, 16px);
160
+ height: var(--kd-c-tree-expand-icon-loading-sizing-height, 16px);
161
+ }
162
+ .kd-tree-node-root .kd-spin-dot-spin .kd-spin-dot-item {
163
+ width: var(--kd-c-tree-expand-icon-loading-sizing-width, 16px);
164
+ height: var(--kd-c-tree-expand-icon-loading-sizing-height, 16px);
165
+ }
139
166
  .kd-tree-node-fb-children-pointerEvents * {
140
167
  pointer-events: none;
141
168
  }
@@ -176,8 +203,8 @@
176
203
  }
177
204
  .kd-tree-node-icon {
178
205
  cursor: pointer;
179
- height: var(--kd-c-tree-expand-icon-sizing-height, 22px);
180
- width: var(--kd-c-tree-expand-icon-sizing-width, 22px);
206
+ height: var(--kd-c-tree-expand-icon-sizing-height, 16px);
207
+ width: var(--kd-c-tree-expand-icon-sizing-width, 16px);
181
208
  display: -webkit-box;
182
209
  display: -ms-flexbox;
183
210
  display: flex;
@@ -190,9 +217,13 @@
190
217
  font-size: var(--kd-c-tree-node-icon-font-size, 16px);
191
218
  color: var(--kd-c-tree-node-icon-color-text, #666666);
192
219
  }
220
+ .kd-tree-node-icon-hover:hover {
221
+ background-color: var(--kd-c-tree-node-color-backgroung-hover, var(--kd-g-color-hover, #f5f5f5));
222
+ cursor: pointer;
223
+ }
193
224
  .kd-tree-node-icon-hidden {
194
- height: var(--kd-c-tree-node-icon-sizing-height, 20px);
195
- width: var(--kd-c-tree-node-icon-sizing-width, 20px);
225
+ height: var(--kd-c-tree-node-icon-sizing-height, 16px);
226
+ width: var(--kd-c-tree-node-icon-sizing-width, 16px);
196
227
  -ms-flex-negative: 0;
197
228
  flex-shrink: 0;
198
229
  opacity: 0;
@@ -233,10 +264,28 @@
233
264
  -ms-flex-align: center;
234
265
  align-items: center;
235
266
  height: 100%;
267
+ padding-left: 4px;
268
+ }
269
+ .kd-tree-node-title-wrap-hover {
270
+ -webkit-transition: background-color var(--kd-c-tree-motion-duration, var(--kd-g-duration, 0.3s)), color var(--kd-c-tree-motion-duration, var(--kd-g-duration, 0.3s));
271
+ transition: background-color var(--kd-c-tree-motion-duration, var(--kd-g-duration, 0.3s)), color var(--kd-c-tree-motion-duration, var(--kd-g-duration, 0.3s));
272
+ }
273
+ .kd-tree-node-title-wrap-hover:hover {
274
+ background-color: var(--kd-c-tree-node-color-backgroung-hover, var(--kd-g-color-hover, #f5f5f5));
275
+ cursor: pointer;
276
+ }
277
+ .kd-tree-node-title-wrap-selected {
278
+ background-color: var(--kd-c-tree-node-color-backgroung-checked, var(--kd-g-color-theme-3, #e3eeff)) !important;
279
+ color: var(--kd-c-tree-node-color-text-checked, var(--kd-g-color-theme, #5582f3));
280
+ }
281
+ .kd-tree-node-title-wrap-selected .kd-tree-node-title {
282
+ color: var(--kd-c-tree-node-color-text-checked, var(--kd-g-color-theme, #5582f3));
283
+ }
284
+ .kd-tree-node-title-wrap-selected .kd-tree-node-icon {
285
+ color: var(--kd-c-tree-node-color-text-checked, var(--kd-g-color-theme, #5582f3));
236
286
  }
237
287
  .kd-tree-node-title {
238
288
  white-space: nowrap;
239
- margin-left: 6px;
240
289
  }
241
290
  .kd-tree-node-selected {
242
291
  background-color: var(--kd-c-tree-node-color-backgroung-checked, var(--kd-g-color-theme-3, #e3eeff)) !important;
@@ -285,8 +334,8 @@
285
334
  transform: translateY(-50%);
286
335
  }
287
336
  .kd-tree-node-leaf-icon {
288
- height: var(--kd-c-tree-node-icon-sizing-height, 20px);
289
- width: var(--kd-c-tree-node-icon-sizing-width, 20px);
337
+ height: var(--kd-c-tree-node-icon-sizing-height, 16px);
338
+ width: var(--kd-c-tree-node-icon-sizing-width, 16px);
290
339
  display: -webkit-box;
291
340
  display: -ms-flexbox;
292
341
  display: flex;
@@ -28,6 +28,17 @@
28
28
  display: flex;
29
29
  justify-content: flex-start;
30
30
  align-items: center;
31
+
32
+ .@{kd-prefix}-spin-dot-spin {
33
+ border: none;
34
+ width: @tree-expand-icon-loading-width;
35
+ height: @tree-expand-icon-loading-height;
36
+
37
+ .@{kd-prefix}-spin-dot-item {
38
+ width: @tree-expand-icon-loading-width;
39
+ height: @tree-expand-icon-loading-height;
40
+ }
41
+ }
31
42
  }
32
43
  &-fb-children-pointerEvents * {
33
44
  pointer-events: none;
@@ -35,13 +46,8 @@
35
46
  &-item {
36
47
  display: flex;
37
48
  align-items: center;
38
- }
39
- &-item-hover {
40
- transition: background-color @tree-transition-duration, color @tree-transition-duration;
41
- }
42
- &-item-hover:hover {
43
- background-color: @tree-node-hover-bg-color;
44
- cursor: pointer;
49
+
50
+ .node-hover()
45
51
  }
46
52
 
47
53
  &-indent {
@@ -70,6 +76,11 @@
70
76
  align-items: center;
71
77
  font-size: @tree-node-icon-size;
72
78
  color: @tree-node-icon-color-text;
79
+
80
+ &-hover:hover {
81
+ background-color: @tree-node-hover-bg-color;
82
+ cursor: pointer;
83
+ }
73
84
  }
74
85
  &-icon-hidden {
75
86
  height: @tree-node-icon-height;
@@ -99,22 +110,19 @@
99
110
  display: flex;
100
111
  align-items: center;
101
112
  height: 100%;
113
+ padding-left: 4px;
114
+
115
+ .node-hover();
116
+
117
+ &-selected {
118
+ .node-selected()
119
+ }
102
120
  }
103
121
  &-title {
104
122
  white-space: nowrap;
105
- margin-left: 6px;
106
123
  }
107
124
  &-selected {
108
- background-color: @tree-node-checked-bg-color !important;
109
- color: @tree-node-checked-text-color;
110
-
111
- .@{tree-node-prefix-cls}-title {
112
- color: @tree-node-checked-text-color;
113
- }
114
-
115
- .@{tree-node-prefix-cls}-icon {
116
- color: @tree-node-checked-text-color;
117
- }
125
+ .node-selected()
118
126
  }
119
127
 
120
128
  &-draggabled {
@@ -1 +1,25 @@
1
- @import './token.less';
1
+ @import './token.less';
2
+
3
+ .node-hover {
4
+ &-hover {
5
+ transition: background-color @tree-transition-duration, color @tree-transition-duration;
6
+
7
+ &:hover {
8
+ background-color: @tree-node-hover-bg-color;
9
+ cursor: pointer;
10
+ }
11
+ }
12
+ }
13
+
14
+ .node-selected {
15
+ background-color: @tree-node-checked-bg-color !important;
16
+ color: @tree-node-checked-text-color;
17
+
18
+ .@{tree-node-prefix-cls}-title {
19
+ color: @tree-node-checked-text-color;
20
+ }
21
+
22
+ .@{tree-node-prefix-cls}-icon {
23
+ color: @tree-node-checked-text-color;
24
+ }
25
+ }
@@ -16,10 +16,12 @@
16
16
  @tree-node-drag-line-border-color: var(~'@{tree-prefix}-node-drag-line-color-background', #276FF5);
17
17
 
18
18
  // sizing
19
- @tree-expand-icon-height: var(~'@{tree-prefix}-expand-icon-sizing-height', 22px);
20
- @tree-expand-icon-width: var(~'@{tree-prefix}-expand-icon-sizing-width', 22px);
21
- @tree-node-icon-height: var(~'@{tree-prefix}-node-icon-sizing-height', 20px);
22
- @tree-node-icon-width: var(~'@{tree-prefix}-node-icon-sizing-width', 20px);
19
+ @tree-expand-icon-height: var(~'@{tree-prefix}-expand-icon-sizing-height', 16px);
20
+ @tree-expand-icon-width: var(~'@{tree-prefix}-expand-icon-sizing-width', 16px);
21
+ @tree-expand-icon-loading-height: var(~'@{tree-prefix}-expand-icon-loading-sizing-height', 16px);
22
+ @tree-expand-icon-loading-width: var(~'@{tree-prefix}-expand-icon-loading-sizing-width', 16px);
23
+ @tree-node-icon-height: var(~'@{tree-prefix}-node-icon-sizing-height', 16px);
24
+ @tree-node-icon-width: var(~'@{tree-prefix}-node-icon-sizing-width', 16px);
23
25
 
24
26
  // font
25
27
  @tree-font-size: var(~'@{tree-prefix}-font-size', @font-size-small);
@@ -24,6 +24,7 @@ export interface TreeProps {
24
24
  virtual?: boolean;
25
25
  scrollToKey?: string;
26
26
  selectedKeys?: string[];
27
+ loadData?: () => void;
27
28
  onCheck?: (checkedKeys: string[], { checked, node, event, halfCheckedKeys }: any) => void;
28
29
  onExpand?: (expandedKeys: string[], { expanded, node }: any) => void;
29
30
  onSelect?: ({ checked, node, event }: any) => void;
@@ -36,6 +37,7 @@ export interface TreeProps {
36
37
  setTreeNodeClassName?: (node: any) => string;
37
38
  setTreeNodeStyle?: (node: any) => Map<string, string>;
38
39
  estimatedItemSize?: number;
40
+ expandOnClickNode?: boolean;
39
41
  }
40
42
  export declare type TreeNodeData = {
41
43
  checkable?: boolean;
package/lib/tree/tree.js CHANGED
@@ -13,10 +13,12 @@ Object.defineProperty(exports, "__esModule", {
13
13
  });
14
14
  exports.default = void 0;
15
15
 
16
- var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
16
+ var _set = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set"));
17
17
 
18
18
  var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
19
19
 
20
+ var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
21
+
20
22
  var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
21
23
 
22
24
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
@@ -31,6 +33,8 @@ var _react = _interopRequireWildcard(require("react"));
31
33
 
32
34
  var _classnames = _interopRequireDefault(require("classnames"));
33
35
 
36
+ var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
37
+
34
38
  var _ConfigContext = _interopRequireDefault(require("../config-provider/ConfigContext"));
35
39
 
36
40
  var _utils = require("../_utils");
@@ -96,7 +100,9 @@ var InternalTree = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
96
100
  innerEstimatedItemSize = TreeProps.estimatedItemSize,
97
101
  style = TreeProps.style,
98
102
  filterTreeNode = TreeProps.filterTreeNode,
99
- filterValue = TreeProps.filterValue;
103
+ filterValue = TreeProps.filterValue,
104
+ expandOnClickNode = TreeProps.expandOnClickNode,
105
+ loadData = TreeProps.loadData;
100
106
  var treePrefixCls = getPrefixCls(prefixCls, 'tree', customPrefixcls); // 树样式前缀
101
107
 
102
108
  var treeNodePrefixCls = getPrefixCls(prefixCls, 'tree-node', customPrefixcls); // 树节点样式前缀
@@ -162,6 +168,16 @@ var InternalTree = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
162
168
  dragOverNodeKey = _React$useState10[0],
163
169
  setDragOverNodeKey = _React$useState10[1];
164
170
 
171
+ var _React$useState11 = _react.default.useState(new _set.default()),
172
+ _React$useState12 = (0, _slicedToArray2.default)(_React$useState11, 2),
173
+ loadedKeys = _React$useState12[0],
174
+ setLoadedKeys = _React$useState12[1];
175
+
176
+ var _React$useState13 = _react.default.useState(new _set.default()),
177
+ _React$useState14 = (0, _slicedToArray2.default)(_React$useState13, 2),
178
+ loadingKeys = _React$useState14[0],
179
+ setLoadingKeys = _React$useState14[1];
180
+
165
181
  var isSearching = _react.default.useMemo(function () {
166
182
  return typeof filterTreeNode === 'function' && filterValue;
167
183
  }, [filterValue]);
@@ -212,16 +228,55 @@ var InternalTree = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
212
228
  listRef.current.style.transform = "translate3d(0,".concat(tempStartOffset, "px,0)");
213
229
  }
214
230
  }, [listRef, scrollRef, virtual, estimatedItemSize]);
231
+ var handleNodeLoad = (0, _react.useCallback)(function (loadedKeys, loadingKeys, data) {
232
+ var key = data.key;
233
+
234
+ if (!loadData || loadedKeys.has(key) || loadingKeys.has(key)) {
235
+ return;
236
+ }
237
+
238
+ setLoadingKeys(function (prevLoadingKeys) {
239
+ var _context;
240
+
241
+ return new _set.default((0, _concat.default)(_context = []).call(_context, (0, _toConsumableArray2.default)(prevLoadingKeys), [key]));
242
+ });
243
+ loadData(data).then(function () {
244
+ setLoadedKeys(function (prevState) {
245
+ var _context2;
246
+
247
+ return new _set.default((0, _concat.default)(_context2 = []).call(_context2, (0, _toConsumableArray2.default)(prevState), [key]));
248
+ });
249
+ setLoadingKeys(function (prevState) {
250
+ var prevLoadingKeys = (0, _cloneDeep.default)(prevState);
251
+ prevLoadingKeys.delete(key);
252
+ return prevLoadingKeys;
253
+ });
254
+ }).catch(function (e) {
255
+ setLoadingKeys(function (prevState) {
256
+ var prevLoadingKeys = (0, _cloneDeep.default)(prevState);
257
+ prevLoadingKeys.delete(key);
258
+ return prevLoadingKeys;
259
+ });
260
+ setExpandedKeys(function (preExpandedKeys) {
261
+ return (0, _treeUtils.delKey)((0, _toConsumableArray2.default)(preExpandedKeys), [key]);
262
+ });
263
+ throw e;
264
+ });
265
+ }, [loadData, setExpandedKeys]);
215
266
 
216
- var handleExpand = _react.default.useCallback(function (key, value, node) {
217
- var newExpandedKeys = value ? (0, _treeUtils.addKeys)(expandedKeys, [key]) : (0, _treeUtils.delKey)(expandedKeys, [key]);
267
+ var handleExpand = _react.default.useCallback(function (key, expanded, node) {
268
+ var newExpandedKeys = expanded ? (0, _treeUtils.addKeys)(expandedKeys, [key]) : (0, _treeUtils.delKey)(expandedKeys, [key]);
218
269
  onExpand && onExpand(newExpandedKeys, {
219
270
  node: node,
220
- expanded: value
271
+ expanded: expanded
221
272
  });
222
273
  setScrollKey('');
223
274
  setIsInit(false);
224
- }, [expandedKeys, onExpand]);
275
+
276
+ if (expanded && loadData) {
277
+ handleNodeLoad(loadedKeys, loadingKeys, node);
278
+ }
279
+ }, [expandedKeys, onExpand, loadData, handleNodeLoad, loadedKeys, loadingKeys]);
225
280
 
226
281
  var handleCheck = _react.default.useCallback(function (key, value, node, event, pos) {
227
282
  var newCheckedKeys = value ? (0, _treeUtils.addKeys)(checkedKeys, [key]) : (0, _treeUtils.delKey)(checkedKeys, [key]);
@@ -317,10 +372,10 @@ var InternalTree = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
317
372
  }, [onDragEnd]);
318
373
 
319
374
  var handleDrop = _react.default.useCallback(function (event, node, dragNode, dragNodesKeys) {
320
- var _context;
375
+ var _context3;
321
376
 
322
377
  var pos = (0, _treeUtils.getPos)(flattenAllData, dragNodesKeys);
323
- var keys = (0, _concat.default)(_context = (0, _treeUtils.getAllChildKeys)(flattenAllData, pos)).call(_context, dragNodesKeys);
378
+ var keys = (0, _concat.default)(_context3 = (0, _treeUtils.getAllChildKeys)(flattenAllData, pos)).call(_context3, dragNodesKeys);
324
379
  onDrop && onDrop({
325
380
  event: event,
326
381
  node: node,
@@ -386,7 +441,6 @@ var InternalTree = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
386
441
  className: treeRootClassName,
387
442
  ref: listRef
388
443
  }, visibleData && (0, _map.default)(visibleData).call(visibleData, function (item) {
389
- // const props: any = {}
390
444
  var checked = (0, _treeUtils.getChecked)(checkedKeys, item.key);
391
445
  var indeterminate = (0, _treeUtils.getHalfChecked)(halfCheckedKeys, item.key);
392
446
  item.nodeKey = item.key;
@@ -401,8 +455,7 @@ var InternalTree = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
401
455
  item.onSelect = handleSelect;
402
456
  item.checked = checked;
403
457
  item.selected = (0, _treeUtils.getSelected)(selectedKeys, item.key);
404
- item.indeterminate = indeterminate; // item.showLine = showLine
405
-
458
+ item.indeterminate = indeterminate;
406
459
  item.disabled = getDisabled(disabled, item.disabled);
407
460
  item.showIcon = showIcon || false;
408
461
  item.checkable = getCheckable(checkable, item.checkable); // 哪个优先
@@ -417,6 +470,9 @@ var InternalTree = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
417
470
  item.getDragNode = getDragNode;
418
471
  item.setDragNode = setDragNode;
419
472
  item.dragOver = dragOverNodeKey === item.key && dropPosition === 0;
473
+ item.expandOnClickNode = expandOnClickNode;
474
+ item.loading = loadingKeys.has(item.key) && !loadedKeys.has(item.key);
475
+ item.loadData = loadData;
420
476
  return /*#__PURE__*/_react.default.createElement(_treeNode.default, (0, _extends2.default)({}, item, {
421
477
  key: item.key,
422
478
  ref: treeNodeRef
@@ -157,7 +157,6 @@ var useScrollToKey = function useScrollToKey(scrollKey, index, estimatedItemSize
157
157
  }
158
158
 
159
159
  if (treeRoot && treeNode) {
160
- // const treeRootScrollTop = treeRoot.scrollTop
161
160
  var treeRootRect = treeRoot.getBoundingClientRect();
162
161
  var treeNodeRect = treeNode.getBoundingClientRect();
163
162
 
@@ -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;
@@ -35,6 +35,8 @@ var _checkbox = _interopRequireDefault(require("./../checkbox"));
35
35
 
36
36
  var _icon = _interopRequireDefault(require("../icon"));
37
37
 
38
+ var _spin = _interopRequireDefault(require("../spin"));
39
+
38
40
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
39
41
 
40
42
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -86,6 +88,8 @@ var TreeNode = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
86
88
  indeterminate = TreeNodeProps.indeterminate,
87
89
  estimatedItemSize = TreeNodeProps.estimatedItemSize,
88
90
  dragOver = TreeNodeProps.dragOver,
91
+ expandOnClickNode = TreeNodeProps.expandOnClickNode,
92
+ loading = TreeNodeProps.loading,
89
93
  onExpand = TreeNodeProps.onExpand,
90
94
  onCheck = TreeNodeProps.onCheck,
91
95
  onDragStart = TreeNodeProps.onDragStart,
@@ -95,7 +99,7 @@ var TreeNode = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
95
99
  onDragEnd = TreeNodeProps.onDragEnd,
96
100
  onDrop = TreeNodeProps.onDrop,
97
101
  onSelect = TreeNodeProps.onSelect,
98
- 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"]);
102
+ 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"]);
99
103
 
100
104
  var nodeData = _react.default.useMemo(function () {
101
105
  return (0, _extends2.default)({
@@ -113,7 +117,6 @@ var TreeNode = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
113
117
  indeterminate: indeterminate,
114
118
  icon: icon,
115
119
  switcherIcon: switcherIcon,
116
- // showLine,
117
120
  showIcon: showIcon,
118
121
  selected: selected
119
122
  }, others);
@@ -195,57 +198,46 @@ var TreeNode = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
195
198
  }
196
199
 
197
200
  return indentArr;
198
- }; // line的两种模式, 图标被替换和图标不被替换
201
+ };
202
+
203
+ var isLeaf = (0, _react.useCallback)(function () {
204
+ var isLeaf = TreeNodeProps.isLeaf,
205
+ loadData = TreeNodeProps.loadData,
206
+ hasChildNode = TreeNodeProps.hasChildNode;
207
+
208
+ if (isLeaf === false) {
209
+ return false;
210
+ }
199
211
 
212
+ return isLeaf || !loadData && !hasChildNode;
213
+ }, [TreeNodeProps]); // line的两种模式, 图标被替换和图标不被替换
200
214
 
201
215
  var renderExpandIcon = function renderExpandIcon() {
202
- // todo 图标被替换则 line样式改变
203
- // if(switcherIcon){
204
- // }
205
- if (hasChildNode) {
206
- var _classNames2;
207
-
208
- // todo showLine模式 使用+ -符号图标
209
- // if(!!showLine){
210
- // return (
211
- // <span
212
- // onClick={handleClick}
213
- // className={classNames(`${treeNodePrefixCls}-icon`)}
214
- // >
215
- // {expand ? <Icon type='search' /> : <Icon type='add' />}
216
- // </span>
217
- // )
218
- // }
216
+ if (loading) {
217
+ return /*#__PURE__*/_react.default.createElement(_spin.default, {
218
+ type: "component"
219
+ });
220
+ }
221
+
222
+ var showExpandIcon = !isLeaf();
223
+
224
+ if (showExpandIcon) {
225
+ var _classNames3;
226
+
219
227
  if (Array.isArray(switcherIcon) && switcherIcon.length === 2) {
220
228
  return /*#__PURE__*/_react.default.createElement("span", {
221
- className: (0, _classnames.default)("".concat(treeNodePrefixCls, "-icon"))
229
+ className: (0, _classnames.default)("".concat(treeNodePrefixCls, "-icon"), (0, _defineProperty2.default)({}, "".concat(treeNodePrefixCls, "-icon-hover"), !expandOnClickNode)),
230
+ onClick: expandOnClickNode ? undefined : handleExpandIconClick
222
231
  }, expandState ? renderIcon(switcherIcon[1]) : renderIcon(switcherIcon[0]));
223
232
  }
224
233
 
225
234
  return /*#__PURE__*/_react.default.createElement("span", {
226
- className: (0, _classnames.default)("".concat(treeNodePrefixCls, "-icon"), (_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, "".concat(treeNodePrefixCls, "-animation-expand"), expandState), (0, _defineProperty2.default)(_classNames2, "".concat(treeNodePrefixCls, "-animation-collapse"), !expandState), _classNames2))
235
+ className: (0, _classnames.default)("".concat(treeNodePrefixCls, "-icon"), (_classNames3 = {}, (0, _defineProperty2.default)(_classNames3, "".concat(treeNodePrefixCls, "-animation-expand"), expandState), (0, _defineProperty2.default)(_classNames3, "".concat(treeNodePrefixCls, "-animation-collapse"), !expandState), (0, _defineProperty2.default)(_classNames3, "".concat(treeNodePrefixCls, "-icon-hover"), !expandOnClickNode), _classNames3)),
236
+ onClick: expandOnClickNode ? undefined : handleExpandIconClick
227
237
  }, renderIcon(switcherIcon || /*#__PURE__*/_react.default.createElement(_icon.default, {
228
238
  type: "arrow-right-solid"
229
239
  })));
230
240
  } else {
231
- // if(typeof showLine === 'object' && !showLine.showLeafIcon){
232
- // return (
233
- // <span
234
- // className={classNames(`${treeNodePrefixCls}-icon-hidden`)}
235
- // >
236
- // {/* todo renderLeafLine() */}
237
- // {renderIcon(leafIcon)}
238
- // </span>
239
- // )
240
- // }else if(typeof showLine === 'object' && showLine.showLeafIcon || showLine === true){
241
- // return (
242
- // <span
243
- // className={classNames(`${treeNodePrefixCls}-leaf-icon`)}
244
- // >
245
- // {renderIcon(leafIcon)}
246
- // </span>
247
- // )
248
- // }
249
241
  // 叶子结点 隐藏展开按钮
250
242
  return /*#__PURE__*/_react.default.createElement("span", {
251
243
  className: "".concat(treeNodePrefixCls, "-icon-hidden")
@@ -260,11 +252,11 @@ var TreeNode = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
260
252
  };
261
253
 
262
254
  var renderNode = function renderNode() {
263
- var _classNames3;
255
+ var _classNames4, _classNames5;
264
256
 
265
257
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
266
258
  draggable: draggable && !disabled,
267
- className: (0, _classnames.default)((_classNames3 = {}, (0, _defineProperty2.default)(_classNames3, "".concat(treeNodePrefixCls, "-draggabled"), true), (0, _defineProperty2.default)(_classNames3, "".concat(treeNodePrefixCls, "-root"), true), (0, _defineProperty2.default)(_classNames3, "".concat(treeNodePrefixCls, "-fb-children-pointerEvents"), forbiddenChildrenPointerEvents), (0, _defineProperty2.default)(_classNames3, "".concat(treeNodePrefixCls, "-drag-over"), dragOver), _classNames3)),
259
+ className: (0, _classnames.default)((_classNames4 = {}, (0, _defineProperty2.default)(_classNames4, "".concat(treeNodePrefixCls, "-draggabled"), true), (0, _defineProperty2.default)(_classNames4, "".concat(treeNodePrefixCls, "-root"), true), (0, _defineProperty2.default)(_classNames4, "".concat(treeNodePrefixCls, "-fb-children-pointerEvents"), forbiddenChildrenPointerEvents), (0, _defineProperty2.default)(_classNames4, "".concat(treeNodePrefixCls, "-drag-over"), dragOver), _classNames4)),
268
260
  onDragStart: handleDragStart,
269
261
  onDragEnd: handleDragEnd,
270
262
  onDragOver: handleDragOver,
@@ -273,7 +265,8 @@ var TreeNode = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
273
265
  onDrop: handleDrop,
274
266
  ref: dragRef
275
267
  }, indent(), renderExpandIcon(), showIcon && renderNodeIcon(), /*#__PURE__*/_react.default.createElement("div", {
276
- className: "".concat(treeNodePrefixCls, "-title-wrap")
268
+ className: (0, _classnames.default)((_classNames5 = {}, (0, _defineProperty2.default)(_classNames5, "".concat(treeNodePrefixCls, "-title-wrap"), true), (0, _defineProperty2.default)(_classNames5, "".concat(treeNodePrefixCls, "-title-wrap-hover"), !expandOnClickNode && !disabled), (0, _defineProperty2.default)(_classNames5, "".concat(treeNodePrefixCls, "-title-wrap-selected"), selected && selectable && !disabled && !expandOnClickNode), _classNames5)),
269
+ onClick: expandOnClickNode ? undefined : handleClick
277
270
  }, checkable ? /*#__PURE__*/_react.default.createElement(_checkbox.default, {
278
271
  onChange: handleOnchange,
279
272
  checked: checked,
@@ -303,12 +296,17 @@ var TreeNode = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
303
296
  };
304
297
  });
305
298
 
306
- var handleClick = _react.default.useCallback(function (e) {
307
- e.stopPropagation();
299
+ var handleExpandIconClick = (0, _react.useCallback)(function (e) {
300
+ e === null || e === void 0 ? void 0 : e.stopPropagation();
308
301
  setExpandState(!expandState);
309
302
  onExpand && onExpand(nodeKey, !expandState, nodeData);
303
+ }, [expandState, nodeData, nodeKey, onExpand, setExpandState]);
304
+
305
+ var handleClick = _react.default.useCallback(function (e) {
306
+ e.stopPropagation();
307
+ expandOnClickNode && handleExpandIconClick();
310
308
  handleSelect(e);
311
- }, [setExpandState, expandState, onExpand, nodeKey, nodeData, handleSelect]);
309
+ }, [expandOnClickNode, handleExpandIconClick, handleSelect]);
312
310
 
313
311
  var handleDragStart = _react.default.useCallback(function (e) {
314
312
  if (!draggable) return;
@@ -364,11 +362,11 @@ var TreeNode = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
364
362
  }, [onDrop, nodeData, nodeKey]);
365
363
 
366
364
  return /*#__PURE__*/_react.default.createElement("div", {
367
- className: (0, _classnames.default)("".concat(treeNodePrefixCls, "-item"), (0, _defineProperty2.default)({}, "".concat(treeNodePrefixCls, "-item-hover"), !disabled && selectable), (0, _defineProperty2.default)({}, "".concat(treeNodePrefixCls, "-selected"), selected && selectable && !disabled), (0, _defineProperty2.default)({}, "".concat(treeNodePrefixCls, "-disabled"), disabled), (0, _defineProperty2.default)({}, "".concat(treeNodePrefixCls, "-opened"), expandState), (0, _concat.default)(_context = "".concat(treeNodePrefixCls, "-item-")).call(_context, nodeKey), className),
365
+ className: (0, _classnames.default)("".concat(treeNodePrefixCls, "-item"), (0, _defineProperty2.default)({}, "".concat(treeNodePrefixCls, "-item-hover"), !disabled && selectable && expandOnClickNode), (0, _defineProperty2.default)({}, "".concat(treeNodePrefixCls, "-selected"), selected && selectable && !disabled && expandOnClickNode), (0, _defineProperty2.default)({}, "".concat(treeNodePrefixCls, "-disabled"), disabled), (0, _defineProperty2.default)({}, "".concat(treeNodePrefixCls, "-opened"), expandState), (0, _concat.default)(_context = "".concat(treeNodePrefixCls, "-item-")).call(_context, nodeKey), className),
368
366
  style: (0, _extends2.default)({
369
367
  height: "".concat(estimatedItemSize, "px")
370
368
  }, style),
371
- onClick: handleClick
369
+ onClick: expandOnClickNode ? handleClick : undefined
372
370
  }, renderNode());
373
371
  });
374
372
 
@@ -75,7 +75,7 @@ var flattenAll = function flattenAll(treeData) {
75
75
 
76
76
  var _pos = pos ? (0, _concat.default)(_context = "".concat(pos, "-")).call(_context, index) : "".concat(index);
77
77
 
78
- var hasChildNode = children && children instanceof Array && children.length > 0;
78
+ var hasChildNode = item.isLeaf ? false : children && children instanceof Array && children.length > 0;
79
79
  var flattenNode = (0, _extends2.default)({
80
80
  title: title,
81
81
  key: key,
@@ -92,7 +92,7 @@ var flattenAll = function flattenAll(treeData) {
92
92
  }
93
93
 
94
94
  _level++;
95
- fn(children, newTreeData, _level, _pos, flattenNode);
95
+ hasChildNode && fn(children, newTreeData, _level, _pos, flattenNode);
96
96
  });
97
97
  return newTreeData;
98
98
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kdcloudjs/kdesign",
3
- "version": "1.5.4",
3
+ "version": "1.5.7",
4
4
  "description": "KDesign 金蝶前端react 组件库",
5
5
  "title": "kdesign",
6
6
  "keywords": [