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.
- package/CHANGELOG.md +13 -0
- package/Calendar/styles/index.less +15 -16
- package/DatePicker/styles/index.less +9 -0
- package/DatePicker/styles/mixin.less +8 -0
- package/Picker/styles/index.less +0 -1
- package/Picker/styles/mixin.less +1 -20
- package/TreePicker/styles/index.less +13 -0
- package/cjs/Calendar/TableHeaderRow.js +3 -3
- package/cjs/Cascader/Cascader.js +2 -2
- package/cjs/Cascader/utils.d.ts +1 -1
- package/cjs/Cascader/utils.js +2 -2
- package/cjs/Content/Content.d.ts +1 -1
- package/cjs/Footer/Footer.d.ts +1 -1
- package/cjs/Header/Header.d.ts +1 -1
- package/cjs/MultiCascader/MultiCascader.js +4 -4
- package/cjs/MultiCascader/utils.d.ts +1 -1
- package/cjs/MultiCascader/utils.js +2 -2
- package/cjs/Navbar/NavbarBrand.d.ts +1 -1
- package/cjs/TreePicker/TreeNode.d.ts +3 -3
- package/cjs/TreePicker/TreeNode.js +1 -11
- package/cjs/TreePicker/TreePicker.js +8 -1
- package/cjs/utils/createComponent.d.ts +3 -3
- package/cjs/utils/treeUtils.d.ts +12 -0
- package/cjs/utils/treeUtils.js +42 -0
- package/dist/rsuite-rtl.css +167 -95
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +167 -95
- package/dist/rsuite.js +11 -11
- package/dist/rsuite.min.css +1 -1
- package/dist/rsuite.min.css.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/Calendar/TableHeaderRow.js +3 -3
- package/esm/Cascader/Cascader.js +2 -2
- package/esm/Cascader/utils.d.ts +1 -1
- package/esm/Cascader/utils.js +2 -2
- package/esm/Content/Content.d.ts +1 -1
- package/esm/Footer/Footer.d.ts +1 -1
- package/esm/Header/Header.d.ts +1 -1
- package/esm/MultiCascader/MultiCascader.js +4 -4
- package/esm/MultiCascader/utils.d.ts +1 -1
- package/esm/MultiCascader/utils.js +2 -2
- package/esm/Navbar/NavbarBrand.d.ts +1 -1
- package/esm/TreePicker/TreeNode.d.ts +3 -3
- package/esm/TreePicker/TreeNode.js +2 -11
- package/esm/TreePicker/TreePicker.js +9 -2
- package/esm/utils/createComponent.d.ts +3 -3
- package/esm/utils/treeUtils.d.ts +12 -0
- package/esm/utils/treeUtils.js +36 -0
- package/package.json +2 -2
- package/styles/color-modes/dark.less +1 -0
- package/styles/color-modes/high-contrast.less +1 -0
- package/styles/color-modes/light.less +1 -0
- 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-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
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
|
}
|
package/Picker/styles/index.less
CHANGED
|
@@ -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({
|
package/Picker/styles/mixin.less
CHANGED
|
@@ -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:
|
|
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
|
});
|
package/cjs/Cascader/Cascader.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
311
|
+
removeColumnByIndex(columnIndex);
|
|
312
312
|
}
|
|
313
313
|
|
|
314
314
|
if (isLeafNode) {
|
package/cjs/Cascader/utils.d.ts
CHANGED
|
@@ -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
|
-
|
|
21
|
+
removeColumnByIndex: (index: number) => void;
|
|
22
22
|
};
|
|
23
23
|
export {};
|
package/cjs/Cascader/utils.js
CHANGED
|
@@ -131,7 +131,7 @@ function usePaths(params) {
|
|
|
131
131
|
*/
|
|
132
132
|
|
|
133
133
|
|
|
134
|
-
function
|
|
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
|
-
|
|
173
|
+
removeColumnByIndex: removeColumnByIndex
|
|
174
174
|
};
|
|
175
175
|
}
|
package/cjs/Content/Content.d.ts
CHANGED
|
@@ -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<"
|
|
7
|
+
declare const Content: import("../@types/common").RsRefForwardingComponent<"main", ComponentProps>;
|
|
8
8
|
export default Content;
|
package/cjs/Footer/Footer.d.ts
CHANGED
|
@@ -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<"
|
|
3
|
+
declare const Footer: import("../@types/common").RsRefForwardingComponent<"footer", ComponentProps>;
|
|
4
4
|
export default Footer;
|
package/cjs/Header/Header.d.ts
CHANGED
|
@@ -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<"
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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<"
|
|
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?:
|
|
7
|
-
label?:
|
|
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:
|
|
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,
|
|
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?:
|
|
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<
|
|
12
|
+
declare function createComponent<TElement extends React.ElementType = 'div'>({ name, componentAs, componentClassPrefix, ...defaultProps }: Props<TElement>): RsRefForwardingComponent<TElement, ComponentProps>;
|
|
13
13
|
export default createComponent;
|
package/cjs/utils/treeUtils.d.ts
CHANGED
|
@@ -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;
|
package/cjs/utils/treeUtils.js
CHANGED
|
@@ -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
|
}
|