@kdcloudjs/kdesign 1.7.20 → 1.7.22

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 (68) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/kdesign-complete.less +12 -4
  3. package/dist/kdesign.css +13 -5
  4. package/dist/kdesign.css.map +1 -1
  5. package/dist/kdesign.js +363 -268
  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/_utils/reactNode.d.ts +1 -0
  11. package/es/_utils/reactNode.js +3 -0
  12. package/es/checkbox/group.js +1 -1
  13. package/es/collapse/style/index.css +3 -0
  14. package/es/collapse/style/index.less +3 -0
  15. package/es/config-provider/compDefaultProps.d.ts +2 -0
  16. package/es/config-provider/compDefaultProps.js +3 -1
  17. package/es/dropdown/dropdown.js +4 -3
  18. package/es/input/input.js +21 -3
  19. package/es/input-number/inputNumber.js +6 -0
  20. package/es/menu/menu.js +27 -18
  21. package/es/menu/style/index.css +3 -0
  22. package/es/menu/style/mixin.less +1 -0
  23. package/es/select/select.js +42 -18
  24. package/es/timeline/TimelineItem.js +2 -1
  25. package/es/timeline/style/index.css +2 -3
  26. package/es/timeline/style/index.less +2 -3
  27. package/es/tooltip/tooltip.js +3 -2
  28. package/es/tree/tree.js +68 -57
  29. package/es/tree/treeNode.js +1 -6
  30. package/es/tree-select/interface.d.ts +1 -0
  31. package/es/tree-select/style/index.css +4 -1
  32. package/es/tree-select/style/index.less +5 -1
  33. package/es/tree-select/style/token.less +1 -0
  34. package/es/tree-select/tree-select.js +18 -4
  35. package/es/virtual-list/Filler.d.ts +1 -0
  36. package/es/virtual-list/Filler.js +4 -3
  37. package/es/virtual-list/virtual-list.d.ts +1 -0
  38. package/es/virtual-list/virtual-list.js +5 -3
  39. package/lib/_utils/reactNode.d.ts +1 -0
  40. package/lib/_utils/reactNode.js +4 -0
  41. package/lib/checkbox/group.js +1 -1
  42. package/lib/collapse/style/index.css +3 -0
  43. package/lib/collapse/style/index.less +3 -0
  44. package/lib/config-provider/compDefaultProps.d.ts +2 -0
  45. package/lib/config-provider/compDefaultProps.js +3 -1
  46. package/lib/dropdown/dropdown.js +4 -3
  47. package/lib/input/input.js +20 -2
  48. package/lib/input-number/inputNumber.js +6 -0
  49. package/lib/menu/menu.js +26 -17
  50. package/lib/menu/style/index.css +3 -0
  51. package/lib/menu/style/mixin.less +1 -0
  52. package/lib/select/select.js +41 -17
  53. package/lib/timeline/TimelineItem.js +2 -1
  54. package/lib/timeline/style/index.css +2 -3
  55. package/lib/timeline/style/index.less +2 -3
  56. package/lib/tooltip/tooltip.js +3 -2
  57. package/lib/tree/tree.js +67 -56
  58. package/lib/tree/treeNode.js +1 -6
  59. package/lib/tree-select/interface.d.ts +1 -0
  60. package/lib/tree-select/style/index.css +4 -1
  61. package/lib/tree-select/style/index.less +5 -1
  62. package/lib/tree-select/style/token.less +1 -0
  63. package/lib/tree-select/tree-select.js +20 -6
  64. package/lib/virtual-list/Filler.d.ts +1 -0
  65. package/lib/virtual-list/Filler.js +4 -3
  66. package/lib/virtual-list/virtual-list.d.ts +1 -0
  67. package/lib/virtual-list/virtual-list.js +5 -3
  68. package/package.json +1 -1
package/es/tree/tree.js CHANGED
@@ -21,8 +21,9 @@ import cloneDeep from 'lodash/cloneDeep';
21
21
  import ConfigContext from '../config-provider/ConfigContext';
22
22
  import { getCompProps } from '../_utils';
23
23
  import TreeNode from './treeNode';
24
+ import VirtualList from '../virtual-list';
24
25
  import { getChecked, getHalfChecked, addKeys, flattenAll, delKey, getFilterData, getSpreadAttrData, getAllCheckedKeys, getDataCheckededStateStrictly, getAllChildKeys, getPos, calcDropPosition } from './utils/treeUtils';
25
- import { useChecked, useExpand, usePlantomHeightEffect, useViewportHeight, useVisibleDataMemo, useScrollToKey, useSelect } from './treeHooks';
26
+ import { useChecked, useExpand, useSelect } from './treeHooks';
26
27
  import isBoolean from 'lodash/isBoolean';
27
28
  var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
28
29
  var _useContext = useContext(ConfigContext),
@@ -80,7 +81,6 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
80
81
  notFoundContent = TreeProps.notFoundContent,
81
82
  others = __rest(TreeProps, ["prefixCls", "treeData", "virtual", "showIcon", "switcherIcon", "icon", "checkable", "checkStrictly", "disabled", "draggable", "scrollToKey", "expandedKeys", "checkedKeys", "defaultExpandRoot", "defaultExpandAll", "defaultExpandParent", "defaultExpandedKeys", "defaultCheckedKeys", "defaultSelectedKeys", "height", "onCheck", "onExpand", "onDragStart", "onDragOver", "onDragLeave", "onDragEnter", "onDragEnd", "onDrop", "onSelect", "selectedKeys", "setTreeNodeStyle", "setTreeNodeClassName", "estimatedItemSize", "style", "className", "filterTreeNode", "filterValue", "expandOnClickNode", "onlyExpandOnClickIcon", "loadData", "notFoundContent"]);
82
83
  var treePrefixCls = getPrefixCls(prefixCls, 'tree', customPrefixcls); // 树样式前缀
83
- var treeNodePrefixCls = getPrefixCls(prefixCls, 'tree-node', customPrefixcls); // 树节点样式前缀
84
84
  var treeNodeClassName = classNames(className, _defineProperty({}, "".concat(treePrefixCls), true));
85
85
  var treeRootClassName = "".concat(treePrefixCls, "-root");
86
86
  var estimatedItemSize = innerEstimatedItemSize; // 节点高度
@@ -94,45 +94,41 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
94
94
  _React$useState2 = _slicedToArray(_React$useState, 2),
95
95
  scrollKey = _React$useState2[0],
96
96
  setScrollKey = _React$useState2[1];
97
- var _React$useState3 = React.useState(0),
98
- _React$useState4 = _slicedToArray(_React$useState3, 2),
99
- start = _React$useState4[0],
100
- setStart = _React$useState4[1];
101
97
  var _useSelect = useSelect(selectedKeysProps, defaultSelectedKeys),
102
98
  _useSelect2 = _slicedToArray(_useSelect, 2),
103
99
  selectedKeys = _useSelect2[0],
104
100
  setSelectedKeys = _useSelect2[1];
105
101
  var listRef = React.useRef(null);
106
- var plantomRef = React.useRef(null);
107
102
  var rootRef = React.useRef(null);
108
103
  var scrollRef = ref || rootRef;
109
104
  var treeNodeRef = React.useRef(null);
110
105
  var dragNodeRef = React.useRef(null);
111
106
  var delayedDragEnterRef = React.useRef(null);
112
- var _React$useState5 = React.useState(true),
107
+ var virtualListRef = React.useRef(null);
108
+ var _React$useState3 = React.useState(true),
109
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
110
+ isInit = _React$useState4[0],
111
+ setIsInit = _React$useState4[1];
112
+ var _React$useState5 = React.useState(null),
113
113
  _React$useState6 = _slicedToArray(_React$useState5, 2),
114
- isInit = _React$useState6[0],
115
- setIsInit = _React$useState6[1];
114
+ dropPosition = _React$useState6[0],
115
+ setDropPosition = _React$useState6[1];
116
116
  var _React$useState7 = React.useState(null),
117
117
  _React$useState8 = _slicedToArray(_React$useState7, 2),
118
- dropPosition = _React$useState8[0],
119
- setDropPosition = _React$useState8[1];
120
- var _React$useState9 = React.useState(null),
118
+ dragOverNodeKey = _React$useState8[0],
119
+ setDragOverNodeKey = _React$useState8[1];
120
+ var _React$useState9 = React.useState(new _Set()),
121
121
  _React$useState10 = _slicedToArray(_React$useState9, 2),
122
- dragOverNodeKey = _React$useState10[0],
123
- setDragOverNodeKey = _React$useState10[1];
122
+ loadedKeys = _React$useState10[0],
123
+ setLoadedKeys = _React$useState10[1];
124
124
  var _React$useState11 = React.useState(new _Set()),
125
125
  _React$useState12 = _slicedToArray(_React$useState11, 2),
126
- loadedKeys = _React$useState12[0],
127
- setLoadedKeys = _React$useState12[1];
128
- var _React$useState13 = React.useState(new _Set()),
126
+ loadingKeys = _React$useState12[0],
127
+ setLoadingKeys = _React$useState12[1];
128
+ var _React$useState13 = React.useState([]),
129
129
  _React$useState14 = _slicedToArray(_React$useState13, 2),
130
- loadingKeys = _React$useState14[0],
131
- setLoadingKeys = _React$useState14[1];
132
- var _React$useState15 = React.useState([]),
133
- _React$useState16 = _slicedToArray(_React$useState15, 2),
134
- searchExpandedKeys = _React$useState16[0],
135
- setSearchExpandedKeys = _React$useState16[1];
130
+ searchExpandedKeys = _React$useState14[0],
131
+ setSearchExpandedKeys = _React$useState14[1];
136
132
  var isSearching = React.useMemo(function () {
137
133
  return typeof filterTreeNode === 'function' && !!filterValue;
138
134
  }, [filterValue]);
@@ -157,13 +153,11 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
157
153
  var filterData = React.useMemo(function () {
158
154
  return getFilterData(spreadAttrData, filterTreeNode, isSearching, posData, keysData);
159
155
  }, [spreadAttrData, isSearching, posData, keysData]);
160
- var _useViewportHeight = useViewportHeight(height, listRef),
161
- _useViewportHeight2 = _slicedToArray(_useViewportHeight, 1),
162
- viewportHeight = _useViewportHeight2[0];
163
- var _useVisibleDataMemo = useVisibleDataMemo(virtual, filterData, viewportHeight, estimatedItemSize, start),
164
- _useVisibleDataMemo2 = _slicedToArray(_useVisibleDataMemo, 1),
165
- visibleData = _useVisibleDataMemo2[0];
166
- var index = React.useMemo(function () {
156
+ useEffect(function () {
157
+ var _a, _b;
158
+ if (typeof scrollKey === 'undefined') {
159
+ return;
160
+ }
167
161
  var scrollIndex = 0;
168
162
  for (var i = 0; i < filterData.length; i++) {
169
163
  if (filterData[i].key === scrollKey) {
@@ -171,19 +165,21 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
171
165
  break;
172
166
  }
173
167
  }
174
- return scrollIndex;
175
- }, [filterData, scrollKey]);
176
- useScrollToKey(scrollKey, index, estimatedItemSize, scrollRef, viewportHeight, treeNodePrefixCls);
177
- usePlantomHeightEffect(plantomRef, filterData, estimatedItemSize);
178
- var handleScroll = useCallback(function () {
179
- if (!virtual) return;
180
- var scrollTop = scrollRef.current.scrollTop;
181
- setStart(Math.floor(scrollTop / estimatedItemSize));
182
- var tempStartOffset = scrollTop - scrollTop % estimatedItemSize;
183
- if (listRef.current && virtual) {
184
- listRef.current.style.transform = "translate3d(0,".concat(tempStartOffset, "px,0)");
168
+ if (virtual) {
169
+ (_a = virtualListRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo({
170
+ index: scrollIndex
171
+ });
172
+ } else {
173
+ var wrapperDom = scrollRef.current;
174
+ var node = wrapperDom ? (_b = wrapperDom === null || wrapperDom === void 0 ? void 0 : wrapperDom.children[0]) === null || _b === void 0 ? void 0 : _b.children[scrollIndex] : null;
175
+ if (node && wrapperDom) {
176
+ var containerHeight = wrapperDom.clientHeight;
177
+ var targetHeight = node.clientHeight;
178
+ var scrollPosition = node.offsetTop + targetHeight - containerHeight;
179
+ wrapperDom.scrollTop = scrollPosition;
180
+ }
185
181
  }
186
- }, [listRef, scrollRef, virtual, estimatedItemSize]);
182
+ }, [filterData, scrollKey, virtual]);
187
183
  var handleNodeLoad = useCallback(function (loadedKeys, loadingKeys, data) {
188
184
  var key = data.key;
189
185
  if (!loadData || loadedKeys.has(key) || loadingKeys.has(key)) {
@@ -228,7 +224,7 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
228
224
  var newSearchExpandedKeys = expanded ? addKeys(searchExpandedKeys, [key]) : delKey(searchExpandedKeys, [key]);
229
225
  setSearchExpandedKeys(newSearchExpandedKeys);
230
226
  }
231
- setScrollKey('');
227
+ setScrollKey(undefined);
232
228
  setIsInit(false);
233
229
  if (expanded && loadData) {
234
230
  handleNodeLoad(loadedKeys, loadingKeys, node);
@@ -374,18 +370,7 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
374
370
  useEffect(function () {
375
371
  setCheckedKeys(checkedKeys);
376
372
  }, [checkedKeys, setCheckedKeys]);
377
- return /*#__PURE__*/React.createElement("div", _extends({
378
- className: treeNodeClassName,
379
- style: style,
380
- ref: scrollRef,
381
- onScroll: handleScroll
382
- }, others), /*#__PURE__*/React.createElement("div", {
383
- ref: plantomRef,
384
- className: "".concat(treePrefixCls, "-plantom")
385
- }), /*#__PURE__*/React.createElement("div", {
386
- className: treeRootClassName,
387
- ref: listRef
388
- }, !(visibleData === null || visibleData === void 0 ? void 0 : visibleData.length) && notFoundContent, visibleData && _mapInstanceProperty(visibleData).call(visibleData, function (item) {
373
+ var renderTreeNode = function renderTreeNode(item) {
389
374
  var checked = getChecked(checkedKeys, item.key);
390
375
  var indeterminate = getHalfChecked(halfCheckedKeys, item.key);
391
376
  item.nodeKey = item.key;
@@ -423,7 +408,33 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
423
408
  key: item.key,
424
409
  ref: treeNodeRef
425
410
  }));
426
- })));
411
+ };
412
+ return /*#__PURE__*/React.createElement("div", _extends({
413
+ className: treeNodeClassName,
414
+ style: style,
415
+ ref: scrollRef
416
+ }, others), /*#__PURE__*/React.createElement("div", {
417
+ className: treeRootClassName,
418
+ ref: listRef
419
+ }, !(filterData === null || filterData === void 0 ? void 0 : filterData.length) && notFoundContent, virtual ? /*#__PURE__*/React.createElement(VirtualList, {
420
+ className: className,
421
+ style: style,
422
+ ref: virtualListRef,
423
+ data: filterData,
424
+ isStaticItemHeight: true,
425
+ itemKey: function itemKey(item) {
426
+ return item === null || item === void 0 ? void 0 : item.key;
427
+ },
428
+ height: height,
429
+ itemHeight: estimatedItemSize,
430
+ outerStyle: {
431
+ overflow: 'unset'
432
+ },
433
+ innerStyle: {
434
+ minWidth: '100%',
435
+ width: 'max-contnet'
436
+ }
437
+ }, renderTreeNode) : _mapInstanceProperty(filterData).call(filterData, renderTreeNode)));
427
438
  });
428
439
  var Tree = InternalTree;
429
440
  Tree.displayName = 'Tree';
@@ -18,7 +18,7 @@ import { getCompProps } from '../_utils';
18
18
  import Checkbox from './../checkbox';
19
19
  import Icon from '../icon';
20
20
  import Spin from '../spin';
21
- var TreeNode = /*#__PURE__*/React.forwardRef(function (props, ref) {
21
+ var TreeNode = /*#__PURE__*/React.forwardRef(function (props) {
22
22
  var _context;
23
23
  var _useContext = useContext(ConfigContext),
24
24
  getPrefixCls = _useContext.getPrefixCls,
@@ -230,11 +230,6 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props, ref) {
230
230
  var handleSelect = React.useCallback(function (e) {
231
231
  selectable && !disabled && onSelect && onSelect(e, nodeData, nodeKey);
232
232
  }, [onSelect, selectable, disabled, nodeData, nodeKey]);
233
- React.useImperativeHandle(ref, function () {
234
- return {
235
- selectNode: handleSelect
236
- };
237
- });
238
233
  var handleExpandIconClick = useCallback(function (e) {
239
234
  e === null || e === void 0 ? void 0 : e.stopPropagation();
240
235
  setExpandState(!expandState);
@@ -48,6 +48,7 @@ export declare type ITreeProps = {
48
48
  treeExpandOnClickNode?: boolean;
49
49
  showTreeIcon?: boolean;
50
50
  treeLoadData?: () => void;
51
+ listHeight?: number;
51
52
  };
52
53
  export declare type TreeSelectValue = string | string[] | number | number[] | undefined;
53
54
  export interface ITreeSelectProps<T extends TreeSelectValue> extends AbstractSelectProps, ITreeProps {
@@ -228,7 +228,7 @@
228
228
  z-index: var(--kd-c-tree-select-z-index, var(--kd-g-z-index-popper, 1050));
229
229
  -webkit-box-sizing: border-box;
230
230
  box-sizing: border-box;
231
- padding: 4px 0;
231
+ padding: var(--kd-c-tree-select-dropdown-spacing-padding-vertical, 8px) 0;
232
232
  margin: 0;
233
233
  overflow: auto;
234
234
  font-size: var(--kd-c-tree-select-dropdown-font-size, 12px);
@@ -240,6 +240,9 @@
240
240
  box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.2);
241
241
  max-height: 200px;
242
242
  }
243
+ .kd-tree-select-dropdown .kd-tree {
244
+ padding: 0;
245
+ }
243
246
  .kd-tree-select-dropdown .kd-tree-node-item {
244
247
  padding: 0 var(--kd-c-tree-select-dropdown-node-spacing-padding-horizontal, 16px);
245
248
  }
@@ -126,7 +126,7 @@
126
126
  left: 0;
127
127
  z-index: @tree-select-z-index;
128
128
  box-sizing: border-box;
129
- padding: 4px 0;
129
+ padding: @tree-select-padding-vertical 0;
130
130
  margin: 0;
131
131
  overflow: auto;
132
132
  font-size: @tree-select-list-font-size;
@@ -137,6 +137,10 @@
137
137
  box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.2);
138
138
  max-height: 200px;
139
139
 
140
+ .@{tree-prefix-cls} {
141
+ padding: 0;
142
+ }
143
+
140
144
  .@{tree-prefix-cls}-node-item {
141
145
  padding: 0 @tree-select-dropdown-node-horizontal;
142
146
  }
@@ -45,6 +45,7 @@
45
45
  @tree-select-bordered: var(~'@{tree-select-custom-prefix}-bordered-spacing-padding-left', 8px);
46
46
  @tree-select-wrapper-padding: var(~'@{tree-select-custom-prefix}-wrapper-spacing-padding', 1px 28px 1px 0);
47
47
  @tree-select-dropdown-node-horizontal: var(~'@{tree-select-custom-prefix}-dropdown-node-spacing-padding-horizontal', 16px);
48
+ @tree-select-padding-vertical: var(~'@{tree-select-custom-prefix}-dropdown-spacing-padding-vertical', 8px);
48
49
 
49
50
  // radius
50
51
  @tree-select-g-radius-border: var(~'@{tree-select-custom-prefix}-radius-border', @radius-border);
@@ -1,3 +1,4 @@
1
+ import _typeof from "@babel/runtime-corejs3/helpers/typeof";
1
2
  import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
2
3
  import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
3
4
  import _toConsumableArray from "@babel/runtime-corejs3/helpers/toConsumableArray";
@@ -96,7 +97,8 @@ var InternalTreeSelect = function InternalTreeSelect(props, ref) {
96
97
  onSelect = treeSelectProps.onSelect,
97
98
  onCheck = treeSelectProps.onCheck,
98
99
  dropdownRender = treeSelectProps.dropdownRender,
99
- onlyExpandOnClickIcon = treeSelectProps.onlyExpandOnClickIcon;
100
+ onlyExpandOnClickIcon = treeSelectProps.onlyExpandOnClickIcon,
101
+ listHeight = treeSelectProps.listHeight;
100
102
  var isMultiple = mode === 'multiple'; // 是否多选
101
103
  var _useMergedState = useMergedState(isMultiple ? [] : undefined, {
102
104
  value: value,
@@ -155,16 +157,26 @@ var InternalTreeSelect = function InternalTreeSelect(props, ref) {
155
157
  var commCls = classNames((_classNames4 = {}, _defineProperty(_classNames4, "".concat(selectPrefixCls, "-bordered"), borderType === 'bordered'), _defineProperty(_classNames4, "".concat(selectPrefixCls, "-underline"), borderType === 'underline'), _defineProperty(_classNames4, "".concat(selectPrefixCls, "-borderless"), borderType === 'none'), _defineProperty(_classNames4, _concatInstanceProperty(_context3 = "".concat(selectPrefixCls, "-size-")).call(_context3, size), size), _defineProperty(_classNames4, "".concat(selectPrefixCls, "-wrapper"), true), _classNames4));
156
158
  useEffect(function () {
157
159
  var arr = [];
158
- if (isMultiple && (initValue === null || initValue === void 0 ? void 0 : initValue.length)) {
160
+ if (isMultiple) {
159
161
  for (var index = 0; index < initValue.length; index++) {
160
162
  var key = initValue[index];
161
163
  if (TreeMap.has(key)) {
162
164
  arr.push(TreeMap.get(key));
165
+ } else {
166
+ arr.push({
167
+ key: key,
168
+ title: key
169
+ });
163
170
  }
164
171
  }
165
172
  } else {
166
173
  if (TreeMap.has(initValue)) {
167
174
  arr.push(TreeMap.get(initValue));
175
+ } else {
176
+ _typeof(initValue) !== undefined && arr.push({
177
+ key: initValue,
178
+ title: initValue
179
+ });
168
180
  }
169
181
  }
170
182
  setSelectTreeNodes(arr);
@@ -315,7 +327,8 @@ var InternalTreeSelect = function InternalTreeSelect(props, ref) {
315
327
  notFoundContent: renderNotContent(),
316
328
  filterTreeNode: defFilterTreeNode,
317
329
  onSelect: handleSelect,
318
- onExpand: handleExpand
330
+ onExpand: handleExpand,
331
+ height: listHeight
319
332
  };
320
333
  if (isMultiple) {
321
334
  treeProps.checkable = true;
@@ -343,7 +356,8 @@ var InternalTreeSelect = function InternalTreeSelect(props, ref) {
343
356
  // 渲染下拉列表框
344
357
  var renderContent = function renderContent() {
345
358
  var dropDownStyle = _extends({
346
- width: style === null || style === void 0 ? void 0 : style.width
359
+ width: style === null || style === void 0 ? void 0 : style.width,
360
+ maxHeight: virtual ? 'unset' : ''
347
361
  }, dropdownStyle);
348
362
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
349
363
  className: dropDownCls,
@@ -3,6 +3,7 @@ interface FillerProps {
3
3
  height: number;
4
4
  offset?: number;
5
5
  outerStyle?: React.CSSProperties;
6
+ innerStyle?: React.CSSProperties;
6
7
  children: React.ReactNode;
7
8
  }
8
9
  declare const Filler: React.FC<FillerProps>;
@@ -4,7 +4,8 @@ var Filler = function Filler(_ref) {
4
4
  var height = _ref.height,
5
5
  offset = _ref.offset,
6
6
  children = _ref.children,
7
- propsOuterStyle = _ref.outerStyle;
7
+ propsOuterStyle = _ref.outerStyle,
8
+ propsInnerStyle = _ref.innerStyle;
8
9
  var outerStyle = {};
9
10
  var innerStyle = {
10
11
  display: 'flex',
@@ -17,13 +18,13 @@ var Filler = function Filler(_ref) {
17
18
  overflow: 'hidden',
18
19
  zIndex: 0
19
20
  }, propsOuterStyle);
20
- innerStyle = _extends(_extends({}, innerStyle), {
21
+ innerStyle = _extends(_extends(_extends({}, innerStyle), {
21
22
  transform: "translateY(".concat(offset, "px)"),
22
23
  position: 'absolute',
23
24
  left: 0,
24
25
  right: 0,
25
26
  top: 0
26
- });
27
+ }), propsInnerStyle);
27
28
  }
28
29
  return /*#__PURE__*/React.createElement("div", {
29
30
  style: outerStyle
@@ -17,6 +17,7 @@ export interface VirtualListProps<T> extends Omit<React.HTMLAttributes<any>, 'ch
17
17
  scrollOptions?: ScrollIntoViewOptions;
18
18
  needFiller?: boolean;
19
19
  outerStyle?: CSSProperties;
20
+ innerStyle?: CSSProperties;
20
21
  onScroll?: React.UIEventHandler<HTMLElement>;
21
22
  }
22
23
  export declare type AvailableVirtualListProps = Pick<VirtualListProps<any>, 'height' | 'itemHeight' | 'threshold' | 'isStaticItemHeight' | 'scrollOptions'>;
@@ -74,7 +74,7 @@ var VirtualList = /*#__PURE__*/React.forwardRef(function (props, ref) {
74
74
  _props$wrapper = props.wrapper,
75
75
  WrapperTagName = _props$wrapper === void 0 ? 'div' : _props$wrapper,
76
76
  _props$height = props.height,
77
- propHeight = _props$height === void 0 ? 300 : _props$height,
77
+ propHeight = _props$height === void 0 ? '100%' : _props$height,
78
78
  _props$isStaticItemHe = props.isStaticItemHeight,
79
79
  isStaticItemHeight = _props$isStaticItemHe === void 0 ? true : _props$isStaticItemHe,
80
80
  propItemHeight = props.itemHeight,
@@ -84,7 +84,8 @@ var VirtualList = /*#__PURE__*/React.forwardRef(function (props, ref) {
84
84
  _props$needFiller = props.needFiller,
85
85
  needFiller = _props$needFiller === void 0 ? true : _props$needFiller,
86
86
  outerStyle = props.outerStyle,
87
- restProps = __rest(props, ["style", "className", "children", "data", "itemKey", "threshold", "wrapper", "height", "isStaticItemHeight", "itemHeight", "measureLongestItem", "scrollOptions", "onScroll", "needFiller", "outerStyle"]);
87
+ innerStyle = props.innerStyle,
88
+ restProps = __rest(props, ["style", "className", "children", "data", "itemKey", "threshold", "wrapper", "height", "isStaticItemHeight", "itemHeight", "measureLongestItem", "scrollOptions", "onScroll", "needFiller", "outerStyle", "innerStyle"]);
88
89
  var styleListMaxHeight = style && style.maxHeight || propHeight;
89
90
  var refItemHeightMap = useRef({});
90
91
  var _useState = useState(200),
@@ -507,7 +508,8 @@ var VirtualList = /*#__PURE__*/React.forwardRef(function (props, ref) {
507
508
  }, restProps), isVirtual ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Filler, {
508
509
  height: itemTotalHeight,
509
510
  offset: state.status === 'MEASURE_DONE' ? state.startItemTop : 0,
510
- outerStyle: outerStyle
511
+ outerStyle: outerStyle,
512
+ innerStyle: innerStyle
511
513
  }, renderChildren(_sliceInstanceProperty(data).call(data, state.startIndex, state.endIndex + 1), state.startIndex)), renderLongestItem()) : needFiller ? /*#__PURE__*/React.createElement(Filler, {
512
514
  height: viewportHeight
513
515
  }, renderChildren(data, 0)) : renderChildren(data, 0)));
@@ -3,5 +3,6 @@ export declare const isValidElement: typeof React.isValidElement;
3
3
  declare type AnyObject = Record<any, any>;
4
4
  declare type RenderProps = undefined | AnyObject | ((originProps: AnyObject) => AnyObject | undefined);
5
5
  export declare function replaceElement(element: React.ReactNode, replacement: React.ReactNode, props: RenderProps): React.ReactNode;
6
+ export declare function isFragment(child: any): boolean;
6
7
  export declare function cloneElement(element: React.ReactNode, props?: RenderProps): React.ReactElement;
7
8
  export {};
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
9
  exports.cloneElement = cloneElement;
10
+ exports.isFragment = isFragment;
10
11
  exports.isValidElement = void 0;
11
12
  exports.replaceElement = replaceElement;
12
13
  var React = _interopRequireWildcard(require("react"));
@@ -18,6 +19,9 @@ function replaceElement(element, replacement, props) {
18
19
  if (!isValidElement(element)) return replacement;
19
20
  return /*#__PURE__*/React.cloneElement(element, typeof props === 'function' ? props(element.props || {}) : props);
20
21
  }
22
+ function isFragment(child) {
23
+ return child && isValidElement(child) && child.type === React.Fragment;
24
+ }
21
25
  function cloneElement(element, props) {
22
26
  return replaceElement(element, element, props);
23
27
  }
@@ -43,7 +43,7 @@ var CheckboxGroup = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
43
43
  getPrefixCls = _useContext.getPrefixCls,
44
44
  prefixCls = _useContext.prefixCls,
45
45
  userDefaultProps = _useContext.compDefaultProps;
46
- var CheckboxProps = (0, _utils.getCompProps)('Checkbox', userDefaultProps, props); // 按钮属性需要合并一遍用户定义的默认属性
46
+ var CheckboxProps = (0, _utils.getCompProps)('CheckboxGroup', userDefaultProps, props); // 多选组属性需要合并一遍用户定义的默认属性
47
47
  var checkboxType = CheckboxProps.checkboxType,
48
48
  className = CheckboxProps.className,
49
49
  style = CheckboxProps.style,
@@ -116,6 +116,9 @@
116
116
  .kd-collapse-panel:last-child {
117
117
  border-top: none;
118
118
  }
119
+ .kd-collapse-panel:first-child {
120
+ border-top: var(--kd-c-collapse-border-width, 1px) solid var(--kd-c-collapse-color-border-strong-2, var(--kd-g-color-border-strong-2, #d9d9d9));
121
+ }
119
122
  .kd-collapse-panel {
120
123
  display: -webkit-inline-box;
121
124
  display: -ms-inline-flexbox;
@@ -9,6 +9,9 @@
9
9
  &-panel:last-child {
10
10
  border-top: none;
11
11
  }
12
+ &-panel:first-child {
13
+ border-top: @collapse-border-width solid @collapse-border-color;
14
+ }
12
15
  &-panel {
13
16
  display: inline-flex;
14
17
  flex-direction: column;
@@ -446,6 +446,8 @@ declare const compDefaultProps: {
446
446
  showSearch: boolean;
447
447
  switcherIcon: () => JSX.Element;
448
448
  expandOnClickNode: boolean;
449
+ listHeight: number;
450
+ virtual: boolean;
449
451
  };
450
452
  CityPicker: {
451
453
  type: string;
@@ -474,7 +474,9 @@ var compDefaultProps = {
474
474
  type: "arrow-right-solid"
475
475
  });
476
476
  },
477
- expandOnClickNode: false
477
+ expandOnClickNode: false,
478
+ listHeight: 184,
479
+ virtual: true
478
480
  },
479
481
  CityPicker: {
480
482
  type: 'domestic',
@@ -17,6 +17,7 @@ var _ConfigContext = _interopRequireDefault(require("../config-provider/ConfigCo
17
17
  var _utils = require("../_utils");
18
18
  var _menu = require("./menu");
19
19
  var _usePopper = _interopRequireDefault(require("../_utils/usePopper"));
20
+ var _reactNode = require("../_utils/reactNode");
20
21
  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); }
21
22
  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; }
22
23
  var findItem = function findItem(element) {
@@ -71,9 +72,9 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
71
72
  children.props.onBlur && children.props.onBlur(e);
72
73
  handleVisibleChange(false);
73
74
  }
74
- }) : children) : /*#__PURE__*/React.cloneElement(React.Children.only(children), {
75
- ref: children.ref || ref,
76
- className: (0, _classnames.default)("".concat(prefixCls, "-trigger"), children.props.className, {
75
+ }) : children) : /*#__PURE__*/React.cloneElement( /*#__PURE__*/React.isValidElement(children) && !(0, _reactNode.isFragment)(children) ? children : /*#__PURE__*/React.createElement("span", null, children), {
76
+ ref: /*#__PURE__*/React.isValidElement(children) && !(0, _reactNode.isFragment)(children) && children.ref ? children.ref : ref,
77
+ className: (0, _classnames.default)("".concat(prefixCls, "-trigger"), /*#__PURE__*/React.isValidElement(children) && !(0, _reactNode.isFragment)(children) && children.props && children.props.className, {
77
78
  disabled: disabled
78
79
  })
79
80
  });
@@ -83,8 +83,7 @@ var InternalInput = function InternalInput(props, ref) {
83
83
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
84
84
  showNumberMark = _useState4[0],
85
85
  setShowNumberMark = _useState4[1];
86
- var thisInputRef = (0, _react.useRef)();
87
- var inputRef = ref || thisInputRef;
86
+ var inputRef = (0, _react.useRef)();
88
87
  var inputPrefixCls = getPrefixCls(prefixCls, 'input', customPrefixcls); // 按钮样式前缀
89
88
  var addonBefore = others.addonBefore,
90
89
  addonAfter = others.addonAfter;
@@ -163,6 +162,25 @@ var InternalInput = function InternalInput(props, ref) {
163
162
  setShowNumberMark(false);
164
163
  }
165
164
  }, [focused]);
165
+ (0, _react.useImperativeHandle)(ref, function () {
166
+ return {
167
+ input: inputRef.current,
168
+ focus: function focus() {
169
+ var _a;
170
+ setFocused(true);
171
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
172
+ },
173
+ blur: function blur() {
174
+ var _a;
175
+ setFocused(false);
176
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.blur();
177
+ },
178
+ select: function select() {
179
+ var _a;
180
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.select();
181
+ }
182
+ };
183
+ });
166
184
  return /*#__PURE__*/_react.default.createElement(_ClearableLabeledInput.default, (0, _extends2.default)({}, inputProps, {
167
185
  handleReset: handleReset,
168
186
  value: value,
@@ -84,6 +84,9 @@ var InternalInputNumber = function InternalInputNumber(props, ref) {
84
84
  return true;
85
85
  };
86
86
  (0, _react.useEffect)(function () {
87
+ if (typeof value === 'undefined') {
88
+ return;
89
+ }
87
90
  setInputValue((0, _numberUtil.serialization)(value + ''));
88
91
  }, [value]);
89
92
  var handleEventAttachValue = function handleEventAttachValue(event, value) {
@@ -252,6 +255,9 @@ var InternalInputNumber = function InternalInputNumber(props, ref) {
252
255
  inputStatus.current.inputFocused = false;
253
256
  };
254
257
  (0, _react.useEffect)(function () {
258
+ if (typeof value === 'undefined') {
259
+ return;
260
+ }
255
261
  var _inputStatus$current = inputStatus.current,
256
262
  isHandleChange = _inputStatus$current.isHandleChange,
257
263
  inputFocused = _inputStatus$current.inputFocused;
package/lib/menu/menu.js CHANGED
@@ -41,10 +41,10 @@ var openSubMenuSet = new _set.default();
41
41
  var Menu = function Menu(props) {
42
42
  var _context2, _classNames;
43
43
  var _a;
44
- var _React$useContext = _react.default.useContext(_configProvider.ConfigContext),
45
- getPrefixCls = _React$useContext.getPrefixCls,
46
- pkgPrefixCls = _React$useContext.prefixCls,
47
- userDefaultProps = _React$useContext.compDefaultProps;
44
+ var _useContext = (0, _react.useContext)(_configProvider.ConfigContext),
45
+ getPrefixCls = _useContext.getPrefixCls,
46
+ pkgPrefixCls = _useContext.prefixCls,
47
+ userDefaultProps = _useContext.compDefaultProps;
48
48
  var userSelectedKey = props.selectedKey,
49
49
  userOpenKeys = props.openKeys;
50
50
  var _b = (0, _utils.getCompProps)('Menu', userDefaultProps, props),
@@ -60,22 +60,23 @@ var Menu = function Menu(props) {
60
60
  theme = _b.theme,
61
61
  collapsed = _b.collapsed,
62
62
  accordion = _b.accordion,
63
- restProps = __rest(_b, ["prefixCls", "mode", "inlineIndent", "forceSubMenuRender", "additionalTools", "onClick", "onOpenChange", "children", "className", "theme", "collapsed", "accordion"]);
63
+ defaultOpenKeys = _b.defaultOpenKeys,
64
+ restProps = __rest(_b, ["prefixCls", "mode", "inlineIndent", "forceSubMenuRender", "additionalTools", "onClick", "onOpenChange", "children", "className", "theme", "collapsed", "accordion", "defaultOpenKeys"]);
64
65
  var prefixCls = getPrefixCls(pkgPrefixCls, 'menu', customPrefixcls);
65
66
  (0, _devwarning.default)(['inline', 'vertical', undefined].indexOf(mode) === -1, 'menu', "cannot found menu mode '".concat(mode, "'"));
66
67
  (0, _devwarning.default)(mode !== 'inline' && accordion !== undefined, 'menu', "'accordion' is valid only in mode='inline'");
67
- var _React$useState = _react.default.useState(''),
68
- _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
69
- selectedKey = _React$useState2[0],
70
- setSelectedKey = _React$useState2[1];
71
- var _React$useState3 = _react.default.useState([]),
72
- _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
73
- selectedKeyPath = _React$useState4[0],
74
- setSelectedKeyPath = _React$useState4[1];
75
- var _React$useState5 = _react.default.useState([]),
76
- _React$useState6 = (0, _slicedToArray2.default)(_React$useState5, 2),
77
- openKeys = _React$useState6[0],
78
- setOpenKeys = _React$useState6[1];
68
+ var _useState = (0, _react.useState)(''),
69
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
70
+ selectedKey = _useState2[0],
71
+ setSelectedKey = _useState2[1];
72
+ var _useState3 = (0, _react.useState)([]),
73
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
74
+ selectedKeyPath = _useState4[0],
75
+ setSelectedKeyPath = _useState4[1];
76
+ var _useState5 = (0, _react.useState)([]),
77
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
78
+ openKeys = _useState6[0],
79
+ setOpenKeys = _useState6[1];
79
80
  if (mode === 'inline') {
80
81
  restProps.triggerSubMenuAction = 'click';
81
82
  }
@@ -90,6 +91,14 @@ var Menu = function Menu(props) {
90
91
  setSelectedKey(userSelectedKey);
91
92
  }
92
93
  }, [userSelectedKey]);
94
+ (0, _react.useEffect)(function () {
95
+ if (Array.isArray(defaultOpenKeys)) {
96
+ setOpenKeys(defaultOpenKeys);
97
+ defaultOpenKeys.forEach(function (d) {
98
+ openSubMenuSet.add(d);
99
+ });
100
+ }
101
+ }, []);
93
102
  (0, _react.useEffect)(function () {
94
103
  if (userOpenKeys !== undefined && Array.isArray(userOpenKeys)) {
95
104
  setOpenKeys(userOpenKeys);