rsuite 5.24.0 → 5.24.1

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 (55) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/Calendar/styles/index.less +15 -16
  3. package/DatePicker/styles/index.less +9 -0
  4. package/DatePicker/styles/mixin.less +8 -0
  5. package/Picker/styles/index.less +0 -1
  6. package/Picker/styles/mixin.less +1 -20
  7. package/TreePicker/styles/index.less +13 -0
  8. package/cjs/Calendar/TableHeaderRow.js +3 -3
  9. package/cjs/Cascader/Cascader.js +2 -2
  10. package/cjs/Cascader/utils.d.ts +1 -1
  11. package/cjs/Cascader/utils.js +2 -2
  12. package/cjs/Content/Content.d.ts +1 -1
  13. package/cjs/Footer/Footer.d.ts +1 -1
  14. package/cjs/Header/Header.d.ts +1 -1
  15. package/cjs/MultiCascader/MultiCascader.js +4 -4
  16. package/cjs/MultiCascader/utils.d.ts +1 -1
  17. package/cjs/MultiCascader/utils.js +2 -2
  18. package/cjs/Navbar/NavbarBrand.d.ts +1 -1
  19. package/cjs/TreePicker/TreeNode.d.ts +3 -3
  20. package/cjs/TreePicker/TreeNode.js +1 -11
  21. package/cjs/TreePicker/TreePicker.js +8 -1
  22. package/cjs/utils/createComponent.d.ts +3 -3
  23. package/cjs/utils/treeUtils.d.ts +12 -0
  24. package/cjs/utils/treeUtils.js +42 -0
  25. package/dist/rsuite-rtl.css +167 -95
  26. package/dist/rsuite-rtl.min.css +1 -1
  27. package/dist/rsuite-rtl.min.css.map +1 -1
  28. package/dist/rsuite.css +167 -95
  29. package/dist/rsuite.js +11 -11
  30. package/dist/rsuite.min.css +1 -1
  31. package/dist/rsuite.min.css.map +1 -1
  32. package/dist/rsuite.min.js +1 -1
  33. package/dist/rsuite.min.js.map +1 -1
  34. package/esm/Calendar/TableHeaderRow.js +3 -3
  35. package/esm/Cascader/Cascader.js +2 -2
  36. package/esm/Cascader/utils.d.ts +1 -1
  37. package/esm/Cascader/utils.js +2 -2
  38. package/esm/Content/Content.d.ts +1 -1
  39. package/esm/Footer/Footer.d.ts +1 -1
  40. package/esm/Header/Header.d.ts +1 -1
  41. package/esm/MultiCascader/MultiCascader.js +4 -4
  42. package/esm/MultiCascader/utils.d.ts +1 -1
  43. package/esm/MultiCascader/utils.js +2 -2
  44. package/esm/Navbar/NavbarBrand.d.ts +1 -1
  45. package/esm/TreePicker/TreeNode.d.ts +3 -3
  46. package/esm/TreePicker/TreeNode.js +2 -11
  47. package/esm/TreePicker/TreePicker.js +9 -2
  48. package/esm/utils/createComponent.d.ts +3 -3
  49. package/esm/utils/treeUtils.d.ts +12 -0
  50. package/esm/utils/treeUtils.js +36 -0
  51. package/package.json +2 -2
  52. package/styles/color-modes/dark.less +1 -0
  53. package/styles/color-modes/high-contrast.less +1 -0
  54. package/styles/color-modes/light.less +1 -0
  55. package/styles/variables.less +7 -8
package/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ ## [5.24.1](https://github.com/rsuite/rsuite/compare/v5.24.0...v5.24.1) (2023-01-12)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **DatePicker,DateRangePicker:** fix the background color error when the cell is hovered ([#3018](https://github.com/rsuite/rsuite/issues/3018)) ([9d6f43e](https://github.com/rsuite/rsuite/commit/9d6f43e6db6049b7fdcc8514e071d870b785ecbb))
6
+ - **MultiCascader:** fix load async data error in inline mode ([#3015](https://github.com/rsuite/rsuite/issues/3015)) ([081eb14](https://github.com/rsuite/rsuite/commit/081eb14de9fb37d80a95324a669b8089e29ef03c)), closes [#3014](https://github.com/rsuite/rsuite/issues/3014)
7
+ - **Navbar.Brand:** fix missing href prop ([#3007](https://github.com/rsuite/rsuite/issues/3007)) ([d0a1f27](https://github.com/rsuite/rsuite/commit/d0a1f276d63e25c295fbef94f82559333ba4c148))
8
+ - **Tree:** fix Tree drag preview style error ([#3003](https://github.com/rsuite/rsuite/issues/3003)) ([4830148](https://github.com/rsuite/rsuite/commit/4830148b9e325bee926a2bfefe0786c08952ec79))
9
+
10
+ ### Performance Improvements
11
+
12
+ - **CSS transitions:** improved duration of transitions ([#3016](https://github.com/rsuite/rsuite/issues/3016)) ([d1829da](https://github.com/rsuite/rsuite/commit/d1829da2e77131e031479ef9aa4f6d00d6307a52))
13
+
1
14
  # [5.24.0](https://github.com/rsuite/rsuite/compare/v5.23.3...v5.24.0) (2022-12-30)
2
15
 
3
16
  ### Bug Fixes
@@ -370,7 +370,8 @@
370
370
  }
371
371
  }
372
372
 
373
- .rs-calendar-table-cell {
373
+ .rs-calendar-table-cell,
374
+ .rs-calendar-table-header-cell {
374
375
  display: table-cell;
375
376
  width: 1%;
376
377
  padding: @calendar-table-cell-padding 0;
@@ -418,21 +419,19 @@
418
419
  }
419
420
 
420
421
  // Table header row
421
- .rs-calendar-table-header-row {
422
- .rs-calendar-table-cell-content {
423
- color: var(--rs-text-secondary);
424
- font-size: @font-size-small;
425
- line-height: @line-height-small;
426
- padding-top: 2px;
427
- padding-bottom: 2px;
428
-
429
- &,
430
- &:hover,
431
- &:focus,
432
- &:hover:focus {
433
- background: none;
434
- cursor: auto;
435
- }
422
+ .rs-calendar-table-header-cell-content {
423
+ color: var(--rs-text-secondary);
424
+ font-size: @font-size-small;
425
+ line-height: @line-height-small;
426
+ padding-top: 2px;
427
+ padding-bottom: 2px;
428
+
429
+ &,
430
+ &:hover,
431
+ &:focus,
432
+ &:hover:focus {
433
+ background: none;
434
+ cursor: auto;
436
435
  }
437
436
  }
438
437
 
@@ -2,6 +2,7 @@
2
2
  @import '../../styles/mixins/listbox';
3
3
  @import '../../Button/styles/mixin';
4
4
  @import '../../Picker/styles/mixin';
5
+ @import 'mixin';
5
6
 
6
7
  // DatePicker Picker
7
8
  // ----------------------
@@ -91,6 +92,10 @@
91
92
  .listbox-option-active();
92
93
  }
93
94
 
95
+ .rs-calendar-month-dropdown-cell-active .rs-calendar-month-dropdown-cell-content:hover {
96
+ .calendar-cell-selected-hover();
97
+ }
98
+
94
99
  .rs-calendar-table-header-row .rs-calendar-table-cell-content {
95
100
  height: 24px;
96
101
  padding-top: 0;
@@ -109,6 +114,10 @@
109
114
  .listbox-option-active();
110
115
  }
111
116
 
117
+ .rs-calendar-table-cell-selected:hover .rs-calendar-table-cell-content {
118
+ .calendar-cell-selected-hover();
119
+ }
120
+
112
121
  .rs-calendar-month-dropdown-scroll {
113
122
  height: 227px;
114
123
  }
@@ -0,0 +1,8 @@
1
+ .calendar-cell-selected-hover() {
2
+ background-color: var(--rs-calendar-cell-selected-hover-bg);
3
+ color: var(--rs-calendar-date-selected-text);
4
+
5
+ .high-contrast-mode({
6
+ color: var(--rs-calendar-date-selected-text);
7
+ });
8
+ }
@@ -382,7 +382,6 @@
382
382
  display: block;
383
383
  padding: @picker-item-content-padding-vertical @picker-item-content-padding-horizontal
384
384
  @picker-item-content-padding-vertical @picker-check-item-content-padding-left;
385
- transition: @picker-item-transition;
386
385
  line-height: @line-height-computed;
387
386
 
388
387
  .high-contrast-mode({
@@ -31,21 +31,15 @@
31
31
  padding: @picker-item-content-padding-vertical @picker-item-content-padding-horizontal;
32
32
  padding-right: (@padding-x + @dropdown-caret-width + @dropdown-caret-padding);
33
33
  position: relative;
34
- cursor: default;
35
- transition: @picker-item-transition;
34
+ cursor: pointer;
36
35
  color: var(--rs-text-heading);
37
36
 
38
- &:hover {
39
- background-color: var(--rs-state-hover-bg);
40
- }
41
-
42
37
  .rs-@{prefix}-menu-group-caret {
43
38
  display: inline-block;
44
39
  margin-left: 2px;
45
40
  position: absolute;
46
41
  top: @padding-y;
47
42
  right: @padding-x;
48
- transition: transform 0.3s linear;
49
43
  padding: 3px;
50
44
  }
51
45
  }
@@ -60,19 +54,6 @@
60
54
  }
61
55
  }
62
56
 
63
- .picker-select-item() {
64
- display: block;
65
- padding: @picker-item-content-padding-vertical @picker-item-content-padding-horizontal;
66
- clear: both;
67
- font-weight: normal;
68
- line-height: @line-height-base;
69
- color: var(--rs-text-primary);
70
- cursor: pointer; //fixed link has not [href] style
71
- transition: @picker-item-transition;
72
- text-decoration: none;
73
- width: 100%;
74
- }
75
-
76
57
  .picker-item-hover() {
77
58
  color: var(--rs-text-primary);
78
59
  background-color: var(--rs-state-hover-bg);
@@ -16,6 +16,19 @@
16
16
  &.rs-tree-virtualized {
17
17
  overflow: hidden;
18
18
  }
19
+
20
+ &-drag-preview {
21
+ position: absolute;
22
+ top: 0;
23
+ color: var(--rs-text-primary);
24
+ background-color: var(--rs-bg-overlay);
25
+ display: inline-block;
26
+ margin: 0;
27
+ padding: @picker-tree-node-padding-vertical @picker-tree-node-padding-horizontal;
28
+ border-radius: 6px;
29
+ box-shadow: 0 1px 8px rgba(0, 0, 0, 0.12);
30
+ z-index: -1;
31
+ }
19
32
  }
20
33
 
21
34
  .rs-tree-node {
@@ -52,15 +52,15 @@ var TableHeaderRow = /*#__PURE__*/_react.default.forwardRef(function (props, ref
52
52
  ref: ref,
53
53
  className: classes
54
54
  }), showWeekNumbers && /*#__PURE__*/_react.default.createElement("div", {
55
- className: prefix('cell'),
55
+ className: prefix('header-cell'),
56
56
  role: "columnheader"
57
57
  }), items.map(function (key) {
58
58
  return /*#__PURE__*/_react.default.createElement("div", {
59
59
  key: key,
60
- className: prefix('cell'),
60
+ className: prefix('header-cell'),
61
61
  role: "columnheader"
62
62
  }, /*#__PURE__*/_react.default.createElement("span", {
63
- className: prefix('cell-content')
63
+ className: prefix('header-cell-content')
64
64
  }, locale === null || locale === void 0 ? void 0 : locale[key]));
65
65
  }));
66
66
  });
@@ -117,7 +117,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
117
117
  valueToPaths = _usePaths.valueToPaths,
118
118
  columnData = _usePaths.columnData,
119
119
  addColumn = _usePaths.addColumn,
120
- romoveColumnByIndex = _usePaths.romoveColumnByIndex,
120
+ removeColumnByIndex = _usePaths.removeColumnByIndex,
121
121
  setValueToPaths = _usePaths.setValueToPaths,
122
122
  setColumnData = _usePaths.setColumnData,
123
123
  setSelectedPaths = _usePaths.setSelectedPaths,
@@ -308,7 +308,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
308
308
  addColumn(node[childrenKey], columnIndex);
309
309
  } else {
310
310
  // Removes subsequent columns of the current column when the clicked node is a leaf node.
311
- romoveColumnByIndex(columnIndex);
311
+ removeColumnByIndex(columnIndex);
312
312
  }
313
313
 
314
314
  if (isLeafNode) {
@@ -18,6 +18,6 @@ export declare function usePaths<T extends Record<string, unknown>>(params: UseP
18
18
  setColumnData: import("react").Dispatch<import("react").SetStateAction<T[][]>>;
19
19
  setSelectedPaths: import("react").Dispatch<import("react").SetStateAction<T[]>>;
20
20
  addColumn: (column: T[], index: number) => void;
21
- romoveColumnByIndex: (index: number) => void;
21
+ removeColumnByIndex: (index: number) => void;
22
22
  };
23
23
  export {};
@@ -131,7 +131,7 @@ function usePaths(params) {
131
131
  */
132
132
 
133
133
 
134
- function romoveColumnByIndex(index) {
134
+ function removeColumnByIndex(index) {
135
135
  setColumnData([].concat((0, _slice.default)(columnData, 0, index)));
136
136
  }
137
137
  /**
@@ -170,6 +170,6 @@ function usePaths(params) {
170
170
  setColumnData: setColumnData,
171
171
  setSelectedPaths: setSelectedPaths,
172
172
  addColumn: addColumn,
173
- romoveColumnByIndex: romoveColumnByIndex
173
+ removeColumnByIndex: removeColumnByIndex
174
174
  };
175
175
  }
@@ -4,5 +4,5 @@ export declare type ContentProps = ComponentProps;
4
4
  * For Internet Explorer 11 and lower, it's suggested that an ARIA role of "main"
5
5
  * be added to the <main> element to ensure it is accessible
6
6
  */
7
- declare const Content: import("../@types/common").RsRefForwardingComponent<"div", ComponentProps>;
7
+ declare const Content: import("../@types/common").RsRefForwardingComponent<"main", ComponentProps>;
8
8
  export default Content;
@@ -1,4 +1,4 @@
1
1
  import { ComponentProps } from '../utils/createComponent';
2
2
  export declare type FooterProps = ComponentProps;
3
- declare const Footer: import("../@types/common").RsRefForwardingComponent<"div", ComponentProps>;
3
+ declare const Footer: import("../@types/common").RsRefForwardingComponent<"footer", ComponentProps>;
4
4
  export default Footer;
@@ -1,4 +1,4 @@
1
1
  import { ComponentProps } from '../utils/createComponent';
2
2
  export declare type HeaderProps = ComponentProps;
3
- declare const Header: import("../@types/common").RsRefForwardingComponent<"div", ComponentProps>;
3
+ declare const Header: import("../@types/common").RsRefForwardingComponent<"header", ComponentProps>;
4
4
  export default Header;
@@ -127,7 +127,7 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
127
127
  columnData = _useColumnData.columnData,
128
128
  setColumnData = _useColumnData.setColumnData,
129
129
  addColumn = _useColumnData.addColumn,
130
- romoveColumnByIndex = _useColumnData.romoveColumnByIndex,
130
+ removeColumnByIndex = _useColumnData.removeColumnByIndex,
131
131
  enforceUpdateColumnData = _useColumnData.enforceUpdateColumnData;
132
132
 
133
133
  (0, _utils3.useUpdateEffect)(function () {
@@ -223,7 +223,7 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
223
223
  node.loading = false;
224
224
  node[childrenKey] = data;
225
225
 
226
- if (targetRef.current) {
226
+ if (targetRef.current || inline) {
227
227
  addFlattenData(data, node);
228
228
  addColumn(data, columnIndex);
229
229
  }
@@ -238,11 +238,11 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
238
238
  addColumn(node[childrenKey], columnIndex);
239
239
  } else {
240
240
  // Removes subsequent columns of the current column when the clicked node is a leaf node.
241
- romoveColumnByIndex(columnIndex);
241
+ removeColumnByIndex(columnIndex);
242
242
  }
243
243
 
244
244
  (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$u = _triggerRef$current.updatePosition) === null || _triggerRef$current$u === void 0 ? void 0 : _triggerRef$current$u.call(_triggerRef$current);
245
- }, [onSelect, getChildren, childrenKey, addFlattenData, addColumn, romoveColumnByIndex]);
245
+ }, [onSelect, getChildren, childrenKey, inline, addFlattenData, addColumn, removeColumnByIndex]);
246
246
  var handleCheck = (0, _react.useCallback)(function (node, event, checked) {
247
247
  var nodeValue = node[valueKey];
248
248
  var nextValue = [];
@@ -51,7 +51,7 @@ export declare function useFlattenData<T>(data: T[], itemKeys: ItemKeys): {
51
51
  export declare function useColumnData<T extends MayHasParent<Record<string, unknown>>>(flattenData: T[]): {
52
52
  columnData: T[][];
53
53
  addColumn: (column: T[], index: number) => void;
54
- romoveColumnByIndex: (index: number) => void;
54
+ removeColumnByIndex: (index: number) => void;
55
55
  setColumnData: import("react").Dispatch<import("react").SetStateAction<T[][]>>;
56
56
  enforceUpdateColumnData: (nextData: T[]) => void;
57
57
  };
@@ -240,7 +240,7 @@ function useColumnData(flattenData) {
240
240
  */
241
241
 
242
242
 
243
- function romoveColumnByIndex(index) {
243
+ function removeColumnByIndex(index) {
244
244
  setColumnData([].concat((0, _slice.default)(columnData, 0, index)));
245
245
  }
246
246
 
@@ -254,7 +254,7 @@ function useColumnData(flattenData) {
254
254
  return {
255
255
  columnData: columnData,
256
256
  addColumn: addColumn,
257
- romoveColumnByIndex: romoveColumnByIndex,
257
+ removeColumnByIndex: removeColumnByIndex,
258
258
  setColumnData: setColumnData,
259
259
  enforceUpdateColumnData: enforceUpdateColumnData
260
260
  };
@@ -1,4 +1,4 @@
1
1
  import { ComponentProps } from '../utils/createComponent';
2
2
  export declare type NavbarBrandProps = ComponentProps;
3
- declare const NavbarBrand: import("../@types/common").RsRefForwardingComponent<"div", ComponentProps>;
3
+ declare const NavbarBrand: import("../@types/common").RsRefForwardingComponent<"a", ComponentProps>;
4
4
  export default NavbarBrand;
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
- import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
2
+ import { WithAsProps, RsRefForwardingComponent, ItemDataType } from '../@types/common';
3
3
  export interface TreeNodeProps extends WithAsProps {
4
4
  rtl?: boolean;
5
5
  layer: number;
6
- value?: any;
7
- label?: any;
6
+ value?: ItemDataType['value'];
7
+ label?: ItemDataType['label'];
8
8
  focus?: boolean;
9
9
  loading?: boolean;
10
10
  expand?: boolean;
@@ -21,8 +21,6 @@ var _ArrowDown = _interopRequireDefault(require("@rsuite/icons/legacy/ArrowDown"
21
21
 
22
22
  var _Spinner = _interopRequireDefault(require("@rsuite/icons/legacy/Spinner"));
23
23
 
24
- var _reactToString = _interopRequireDefault(require("../utils/reactToString"));
25
-
26
24
  var _utils = require("../utils");
27
25
 
28
26
  var _treeUtils = require("../utils/treeUtils");
@@ -68,14 +66,6 @@ var TreeNode = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
68
66
  merge = _useClassNames.merge,
69
67
  withClassPrefix = _useClassNames.withClassPrefix;
70
68
 
71
- var getTitle = (0, _react.useCallback)(function () {
72
- if (typeof label === 'string') {
73
- return label;
74
- } else if ( /*#__PURE__*/_react.default.isValidElement(label)) {
75
- var nodes = (0, _reactToString.default)(label);
76
- return nodes.join('');
77
- }
78
- }, [label]);
79
69
  var handleExpand = (0, _react.useCallback)(function (event) {
80
70
  var _event$nativeEvent, _event$nativeEvent$st;
81
71
 
@@ -165,7 +155,7 @@ var TreeNode = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
165
155
  });
166
156
  return /*#__PURE__*/_react.default.createElement("span", {
167
157
  className: prefix('label'),
168
- title: getTitle(),
158
+ title: (0, _treeUtils.stringifyTreeNodeLabel)(label),
169
159
  "data-layer": layer,
170
160
  "data-key": (nodeData === null || nodeData === void 0 ? void 0 : nodeData.refKey) || '',
171
161
  role: "button",
@@ -353,11 +353,15 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
353
353
  }, [valueKey, childrenKey, expandItemValues, getChildren, onExpand, setExpandItemValues, loadChildren]);
354
354
  var handleDragStart = (0, _react.useCallback)(function (nodeData, event) {
355
355
  if (draggable) {
356
+ var _event$dataTransfer;
357
+
358
+ var dragMoverNode = (0, _treeUtils.createDragPreview)((0, _treeUtils.stringifyTreeNodeLabel)(nodeData[labelKey]), treePrefix('drag-preview'));
359
+ (_event$dataTransfer = event.dataTransfer) === null || _event$dataTransfer === void 0 ? void 0 : _event$dataTransfer.setDragImage(dragMoverNode, 0, 0);
356
360
  setDragNodeKeys((0, _treeUtils.getDragNodeKeys)(nodeData, childrenKey, valueKey));
357
361
  setDragNode(flattenNodes[nodeData.refKey]);
358
362
  onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(nodeData, event);
359
363
  }
360
- }, [draggable, childrenKey, flattenNodes, onDragStart, setDragNodeKeys, setDragNode, valueKey]);
364
+ }, [draggable, labelKey, treePrefix, setDragNodeKeys, childrenKey, valueKey, setDragNode, flattenNodes, onDragStart]);
361
365
  var handleDragEnter = (0, _react.useCallback)(function (nodeData, event) {
362
366
  if (dragNodeKeys.some(function (d) {
363
367
  return (0, _utils.shallowEqual)(d, nodeData[valueKey]);
@@ -376,6 +380,7 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
376
380
  if (dragNodeKeys.some(function (d) {
377
381
  return (0, _utils.shallowEqual)(d, nodeData[valueKey]);
378
382
  })) {
383
+ event.dataTransfer.dropEffect = 'none';
379
384
  return;
380
385
  }
381
386
 
@@ -391,6 +396,7 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
391
396
  onDragLeave === null || onDragLeave === void 0 ? void 0 : onDragLeave(nodeData, event);
392
397
  }, [onDragLeave]);
393
398
  var handleDragEnd = (0, _react.useCallback)(function (nodeData, event) {
399
+ (0, _treeUtils.removeDragPreview)();
394
400
  setDragNode(null);
395
401
  setDragNodeKeys([]);
396
402
  setDragOverNodeKey(null);
@@ -406,6 +412,7 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
406
412
  onDrop === null || onDrop === void 0 ? void 0 : onDrop(dropData, event);
407
413
  }
408
414
 
415
+ (0, _treeUtils.removeDragPreview)();
409
416
  setDragNode(null);
410
417
  setDragNodeKeys([]);
411
418
  setDragOverNodeKey(null);
@@ -1,13 +1,13 @@
1
1
  import React from 'react';
2
2
  import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
3
3
  export declare type ComponentProps = WithAsProps & React.HTMLAttributes<HTMLDivElement>;
4
- interface Props extends React.HTMLAttributes<HTMLDivElement> {
4
+ interface Props<TElement extends React.ElementType> extends React.HTMLAttributes<HTMLDivElement> {
5
5
  name: string;
6
- componentAs?: React.ElementType;
6
+ componentAs?: TElement;
7
7
  componentClassPrefix?: string;
8
8
  }
9
9
  /**
10
10
  * Create a component with `classPrefix` and `as` attributes.
11
11
  */
12
- declare function createComponent({ name, componentAs, componentClassPrefix, ...defaultProps }: Props): RsRefForwardingComponent<"div", ComponentProps>;
12
+ declare function createComponent<TElement extends React.ElementType = 'div'>({ name, componentAs, componentClassPrefix, ...defaultProps }: Props<TElement>): RsRefForwardingComponent<TElement, ComponentProps>;
13
13
  export default createComponent;
@@ -262,3 +262,15 @@ export declare function getTreeNodeIndent(rtl: any, layer: any, absolute?: boole
262
262
  * @returns
263
263
  */
264
264
  export declare function getNodeFormattedRefKey(value: string | number): string;
265
+ /**
266
+ * create drag preview when tree node start drag
267
+ * @param name
268
+ * @param className
269
+ * @returns
270
+ */
271
+ export declare function createDragPreview(name: string, className: string): HTMLDivElement;
272
+ /**
273
+ * remove drag preview when tree node drop
274
+ */
275
+ export declare function removeDragPreview(): void;
276
+ export declare function stringifyTreeNodeLabel(label: string | React.ReactNode): string;
@@ -35,6 +35,9 @@ exports.focusToActiveTreeNode = focusToActiveTreeNode;
35
35
  exports.isSearching = isSearching;
36
36
  exports.getTreeNodeIndent = getTreeNodeIndent;
37
37
  exports.getNodeFormattedRefKey = getNodeFormattedRefKey;
38
+ exports.createDragPreview = createDragPreview;
39
+ exports.removeDragPreview = removeDragPreview;
40
+ exports.stringifyTreeNodeLabel = stringifyTreeNodeLabel;
38
41
  exports.getScrollToIndex = exports.focusPreviousItem = exports.focusNextItem = exports.focusTreeNode = exports.getElementByDataKey = exports.getActiveItem = exports.getActiveIndex = exports.getFocusableItems = void 0;
39
42
 
40
43
  var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
@@ -1128,4 +1131,43 @@ function getTreeNodeIndent(rtl, layer, absolute) {
1128
1131
 
1129
1132
  function getNodeFormattedRefKey(value) {
1130
1133
  return "" + (typeof value === 'number' ? 'Number_' : 'String_') + value;
1134
+ }
1135
+ /**
1136
+ * create drag preview when tree node start drag
1137
+ * @param name
1138
+ * @param className
1139
+ * @returns
1140
+ */
1141
+
1142
+
1143
+ function createDragPreview(name, className) {
1144
+ var dragPreview = document.createElement('div');
1145
+ dragPreview.id = 'rs-tree-drag-preview';
1146
+ dragPreview.innerHTML = name;
1147
+ dragPreview.classList.add(className);
1148
+ document.body.appendChild(dragPreview);
1149
+ return dragPreview;
1150
+ }
1151
+ /**
1152
+ * remove drag preview when tree node drop
1153
+ */
1154
+
1155
+
1156
+ function removeDragPreview() {
1157
+ var _dragPreview$parentNo, _dragPreview$parentNo2;
1158
+
1159
+ var dragPreview = document.getElementById('rs-tree-drag-preview');
1160
+ dragPreview === null || dragPreview === void 0 ? void 0 : (_dragPreview$parentNo = dragPreview.parentNode) === null || _dragPreview$parentNo === void 0 ? void 0 : (_dragPreview$parentNo2 = _dragPreview$parentNo.removeChild) === null || _dragPreview$parentNo2 === void 0 ? void 0 : _dragPreview$parentNo2.call(_dragPreview$parentNo, dragPreview);
1161
+ }
1162
+
1163
+ function stringifyTreeNodeLabel(label) {
1164
+ if (typeof label === 'string') {
1165
+ return label;
1166
+ } else if ( /*#__PURE__*/_react.default.isValidElement(label)) {
1167
+ var _nodes2 = (0, _reactToString.default)(label);
1168
+
1169
+ return _nodes2.join('');
1170
+ }
1171
+
1172
+ return '';
1131
1173
  }