rsuite 5.55.1 → 5.57.0
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/AutoComplete/styles/index.css +3 -3
- package/CHANGELOG.md +33 -0
- package/CascadeTree/package.json +7 -0
- package/CascadeTree/styles/index.css +273 -0
- package/CascadeTree/styles/index.less +77 -0
- package/CascadeTree/styles/search.less +45 -0
- package/Cascader/styles/index.css +190 -195
- package/Cascader/styles/index.less +1 -122
- package/CheckPicker/styles/index.css +142 -40
- package/CheckPicker/styles/index.less +1 -1
- package/CheckTree/styles/index.css +143 -41
- package/CheckTreePicker/styles/index.css +143 -41
- package/CheckTreePicker/styles/index.less +2 -2
- package/Checkbox/styles/index.css +159 -36
- package/Checkbox/styles/index.less +32 -13
- package/DatePicker/styles/index.css +3 -3
- package/DateRangePicker/styles/index.css +3 -3
- package/InputPicker/styles/index.css +3 -3
- package/MultiCascadeTree/package.json +7 -0
- package/MultiCascadeTree/styles/index.css +3701 -0
- package/MultiCascadeTree/styles/index.less +37 -0
- package/MultiCascader/styles/index.css +213 -108
- package/MultiCascader/styles/index.less +11 -31
- package/Pagination/styles/index.css +3 -3
- package/Radio/styles/index.css +133 -19
- package/Radio/styles/index.less +28 -12
- package/RadioGroup/styles/index.css +1 -1
- package/RadioGroup/styles/index.less +1 -1
- package/SelectPicker/styles/index.css +3 -3
- package/TagGroup/styles/index.css +1 -1
- package/TagGroup/styles/index.less +1 -1
- package/TagInput/styles/index.css +141 -39
- package/TagPicker/styles/index.css +141 -39
- package/cjs/@types/common.d.ts +12 -14
- package/cjs/CascadeTree/CascadeTree.d.ts +16 -0
- package/cjs/CascadeTree/CascadeTree.js +174 -0
- package/cjs/CascadeTree/SearchView.d.ts +17 -0
- package/cjs/CascadeTree/SearchView.js +106 -0
- package/cjs/CascadeTree/TreeView.d.ts +20 -0
- package/cjs/{Cascader → CascadeTree}/TreeView.js +42 -33
- package/cjs/CascadeTree/hooks/index.d.ts +3 -0
- package/cjs/CascadeTree/hooks/index.js +12 -0
- package/cjs/{Cascader/utils.d.ts → CascadeTree/hooks/usePaths.d.ts} +3 -25
- package/cjs/CascadeTree/hooks/usePaths.js +42 -0
- package/cjs/CascadeTree/hooks/useSearch.d.ts +17 -0
- package/cjs/CascadeTree/hooks/useSearch.js +59 -0
- package/cjs/CascadeTree/hooks/useSelect.d.ts +23 -0
- package/cjs/CascadeTree/hooks/useSelect.js +64 -0
- package/cjs/CascadeTree/index.d.ts +4 -0
- package/cjs/CascadeTree/index.js +9 -0
- package/cjs/CascadeTree/types.d.ts +66 -0
- package/cjs/CascadeTree/types.js +2 -0
- package/cjs/CascadeTree/utils.d.ts +32 -0
- package/cjs/CascadeTree/utils.js +66 -0
- package/cjs/Cascader/Cascader.d.ts +57 -26
- package/cjs/Cascader/Cascader.js +180 -247
- package/cjs/Cascader/useActive.d.ts +15 -0
- package/cjs/Cascader/useActive.js +43 -0
- package/cjs/Checkbox/Checkbox.d.ts +67 -25
- package/cjs/Checkbox/Checkbox.js +36 -26
- package/cjs/InlineEdit/InlineEdit.d.ts +1 -1
- package/cjs/InputPicker/InputPicker.js +2 -2
- package/cjs/InputPicker/InputPickerContext.d.ts +1 -1
- package/cjs/Loader/Loader.js +5 -4
- package/cjs/MultiCascadeTree/MultiCascadeTree.d.ts +9 -0
- package/cjs/MultiCascadeTree/MultiCascadeTree.js +131 -0
- package/cjs/MultiCascadeTree/SearchView.d.ts +17 -0
- package/cjs/MultiCascadeTree/SearchView.js +117 -0
- package/cjs/MultiCascadeTree/TreeView.d.ts +22 -0
- package/cjs/{MultiCascader → MultiCascadeTree}/TreeView.js +22 -21
- package/cjs/MultiCascadeTree/hooks/index.d.ts +5 -0
- package/cjs/MultiCascadeTree/hooks/index.js +16 -0
- package/cjs/MultiCascadeTree/hooks/useCascadeValue.d.ts +18 -0
- package/cjs/MultiCascadeTree/hooks/useCascadeValue.js +202 -0
- package/cjs/MultiCascadeTree/hooks/useColumnData.d.ts +16 -0
- package/cjs/MultiCascadeTree/hooks/useColumnData.js +52 -0
- package/cjs/MultiCascadeTree/hooks/useFlattenData.d.ts +9 -0
- package/cjs/MultiCascadeTree/hooks/useFlattenData.js +33 -0
- package/cjs/MultiCascadeTree/hooks/useSearch.d.ts +17 -0
- package/cjs/MultiCascadeTree/hooks/useSearch.js +52 -0
- package/cjs/MultiCascadeTree/hooks/useSelect.d.ts +19 -0
- package/cjs/MultiCascadeTree/hooks/useSelect.js +83 -0
- package/cjs/MultiCascadeTree/index.d.ts +4 -0
- package/cjs/MultiCascadeTree/index.js +9 -0
- package/cjs/MultiCascadeTree/types.d.ts +26 -0
- package/cjs/MultiCascadeTree/types.js +2 -0
- package/cjs/MultiCascadeTree/utils.d.ts +37 -0
- package/cjs/MultiCascadeTree/utils.js +140 -0
- package/cjs/MultiCascader/MultiCascader.d.ts +57 -29
- package/cjs/MultiCascader/MultiCascader.js +175 -287
- package/cjs/Radio/Radio.d.ts +42 -16
- package/cjs/Radio/Radio.js +42 -37
- package/cjs/RadioGroup/RadioGroup.d.ts +1 -1
- package/cjs/RadioGroup/RadioGroup.js +3 -3
- package/cjs/TagPicker/index.js +1 -1
- package/cjs/Tree/Tree.d.ts +4 -4
- package/cjs/index.d.ts +6 -1
- package/cjs/index.js +8 -3
- package/cjs/internals/Picker/ListCheckItem.d.ts +2 -11
- package/cjs/internals/Picker/ListCheckItem.js +8 -6
- package/cjs/internals/Picker/PickerToggle.d.ts +4 -5
- package/cjs/toaster/ToastContainer.d.ts +9 -2
- package/cjs/toaster/index.d.ts +0 -1
- package/cjs/toaster/index.js +1 -3
- package/cjs/useToaster/index.d.ts +2 -0
- package/cjs/useToaster/index.js +9 -0
- package/cjs/{toaster → useToaster}/useToaster.d.ts +4 -4
- package/cjs/{toaster → useToaster}/useToaster.js +4 -4
- package/cjs/utils/index.d.ts +1 -0
- package/cjs/utils/index.js +5 -2
- package/dist/rsuite-no-reset-rtl.css +322 -124
- package/dist/rsuite-no-reset-rtl.min.css +1 -1
- package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
- package/dist/rsuite-no-reset.css +322 -124
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +322 -124
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +322 -124
- package/dist/rsuite.js +248 -50
- package/dist/rsuite.js.map +1 -1
- 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/@types/common.d.ts +12 -14
- package/esm/CascadeTree/CascadeTree.d.ts +16 -0
- package/esm/CascadeTree/CascadeTree.js +167 -0
- package/esm/CascadeTree/SearchView.d.ts +17 -0
- package/esm/CascadeTree/SearchView.js +100 -0
- package/esm/CascadeTree/TreeView.d.ts +20 -0
- package/esm/{Cascader → CascadeTree}/TreeView.js +42 -33
- package/esm/CascadeTree/hooks/index.d.ts +3 -0
- package/esm/CascadeTree/hooks/index.js +4 -0
- package/esm/{Cascader/utils.d.ts → CascadeTree/hooks/usePaths.d.ts} +3 -25
- package/esm/CascadeTree/hooks/usePaths.js +36 -0
- package/esm/CascadeTree/hooks/useSearch.d.ts +17 -0
- package/esm/CascadeTree/hooks/useSearch.js +54 -0
- package/esm/CascadeTree/hooks/useSelect.d.ts +23 -0
- package/esm/CascadeTree/hooks/useSelect.js +59 -0
- package/esm/CascadeTree/index.d.ts +4 -0
- package/esm/CascadeTree/index.js +3 -0
- package/esm/CascadeTree/types.d.ts +66 -0
- package/esm/CascadeTree/types.js +1 -0
- package/esm/CascadeTree/utils.d.ts +32 -0
- package/esm/CascadeTree/utils.js +61 -0
- package/esm/Cascader/Cascader.d.ts +57 -26
- package/esm/Cascader/Cascader.js +167 -233
- package/esm/Cascader/useActive.d.ts +15 -0
- package/esm/Cascader/useActive.js +37 -0
- package/esm/Checkbox/Checkbox.d.ts +67 -25
- package/esm/Checkbox/Checkbox.js +38 -28
- package/esm/InlineEdit/InlineEdit.d.ts +1 -1
- package/esm/InputPicker/InputPicker.js +2 -2
- package/esm/InputPicker/InputPickerContext.d.ts +1 -1
- package/esm/Loader/Loader.js +6 -5
- package/esm/MultiCascadeTree/MultiCascadeTree.d.ts +9 -0
- package/esm/MultiCascadeTree/MultiCascadeTree.js +125 -0
- package/esm/MultiCascadeTree/SearchView.d.ts +17 -0
- package/esm/MultiCascadeTree/SearchView.js +111 -0
- package/esm/MultiCascadeTree/TreeView.d.ts +22 -0
- package/esm/{MultiCascader → MultiCascadeTree}/TreeView.js +22 -21
- package/esm/MultiCascadeTree/hooks/index.d.ts +5 -0
- package/esm/MultiCascadeTree/hooks/index.js +6 -0
- package/esm/MultiCascadeTree/hooks/useCascadeValue.d.ts +18 -0
- package/esm/MultiCascadeTree/hooks/useCascadeValue.js +197 -0
- package/esm/MultiCascadeTree/hooks/useColumnData.d.ts +16 -0
- package/esm/MultiCascadeTree/hooks/useColumnData.js +46 -0
- package/esm/MultiCascadeTree/hooks/useFlattenData.d.ts +9 -0
- package/esm/MultiCascadeTree/hooks/useFlattenData.js +28 -0
- package/esm/MultiCascadeTree/hooks/useSearch.d.ts +17 -0
- package/esm/MultiCascadeTree/hooks/useSearch.js +47 -0
- package/esm/MultiCascadeTree/hooks/useSelect.d.ts +19 -0
- package/esm/MultiCascadeTree/hooks/useSelect.js +77 -0
- package/esm/MultiCascadeTree/index.d.ts +4 -0
- package/esm/MultiCascadeTree/index.js +3 -0
- package/esm/MultiCascadeTree/types.d.ts +26 -0
- package/esm/MultiCascadeTree/types.js +1 -0
- package/esm/MultiCascadeTree/utils.d.ts +37 -0
- package/esm/MultiCascadeTree/utils.js +130 -0
- package/esm/MultiCascader/MultiCascader.d.ts +57 -29
- package/esm/MultiCascader/MultiCascader.js +168 -279
- package/esm/Radio/Radio.d.ts +42 -16
- package/esm/Radio/Radio.js +43 -38
- package/esm/RadioGroup/RadioGroup.d.ts +1 -1
- package/esm/RadioGroup/RadioGroup.js +5 -5
- package/esm/TagPicker/index.js +1 -1
- package/esm/Tree/Tree.d.ts +4 -4
- package/esm/index.d.ts +6 -1
- package/esm/index.js +5 -1
- package/esm/internals/Picker/ListCheckItem.d.ts +2 -11
- package/esm/internals/Picker/ListCheckItem.js +8 -6
- package/esm/internals/Picker/PickerToggle.d.ts +4 -5
- package/esm/toaster/ToastContainer.d.ts +9 -2
- package/esm/toaster/index.d.ts +0 -1
- package/esm/toaster/index.js +0 -1
- package/esm/useToaster/index.d.ts +2 -0
- package/esm/useToaster/index.js +3 -0
- package/esm/{toaster → useToaster}/useToaster.d.ts +4 -4
- package/esm/{toaster → useToaster}/useToaster.js +4 -4
- package/esm/utils/index.d.ts +1 -0
- package/esm/utils/index.js +2 -1
- package/internals/Picker/styles/index.less +1 -1
- package/package.json +1 -1
- package/styles/index.less +2 -0
- package/useToaster/package.json +7 -0
- package/useToaster/styles/index.css +239 -0
- package/useToaster/styles/index.less +1 -0
- package/cjs/Cascader/DropdownMenu.d.ts +0 -24
- package/cjs/Cascader/DropdownMenu.js +0 -175
- package/cjs/Cascader/TreeView.d.ts +0 -24
- package/cjs/Cascader/utils.js +0 -79
- package/cjs/MultiCascader/TreeView.d.ts +0 -25
- package/cjs/MultiCascader/utils.d.ts +0 -71
- package/cjs/MultiCascader/utils.js +0 -382
- package/esm/Cascader/DropdownMenu.d.ts +0 -24
- package/esm/Cascader/DropdownMenu.js +0 -168
- package/esm/Cascader/TreeView.d.ts +0 -24
- package/esm/Cascader/utils.js +0 -74
- package/esm/MultiCascader/TreeView.d.ts +0 -25
- package/esm/MultiCascader/utils.d.ts +0 -71
- package/esm/MultiCascader/utils.js +0 -369
|
@@ -1,382 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
"use strict";
|
|
3
|
-
|
|
4
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
-
exports.__esModule = true;
|
|
6
|
-
exports.useFlattenData = useFlattenData;
|
|
7
|
-
exports.useColumnData = useColumnData;
|
|
8
|
-
exports.useCascadeValue = useCascadeValue;
|
|
9
|
-
exports.removeAllChildrenValue = exports.getOtherItemValuesByUnselectChild = exports.isSomeParentChecked = exports.isSomeChildChecked = exports.getParents = void 0;
|
|
10
|
-
var _react = require("react");
|
|
11
|
-
var _uniq = _interopRequireDefault(require("lodash/uniq"));
|
|
12
|
-
var _remove = _interopRequireDefault(require("lodash/remove"));
|
|
13
|
-
var _slice = _interopRequireDefault(require("lodash/slice"));
|
|
14
|
-
var _treeUtils = require("../utils/treeUtils");
|
|
15
|
-
var _attachParent = require("../utils/attachParent");
|
|
16
|
-
/**
|
|
17
|
-
* Get all parents of a node
|
|
18
|
-
* @param node
|
|
19
|
-
*/
|
|
20
|
-
var getParents = function getParents(node) {
|
|
21
|
-
var parents = [];
|
|
22
|
-
if (!node.parent) {
|
|
23
|
-
return parents;
|
|
24
|
-
}
|
|
25
|
-
parents.push(node.parent);
|
|
26
|
-
parents = parents.concat(getParents(node.parent));
|
|
27
|
-
return parents;
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Check if any child nodes are selected.
|
|
32
|
-
* @param node
|
|
33
|
-
* @param value
|
|
34
|
-
* @param itemKeys
|
|
35
|
-
*/
|
|
36
|
-
exports.getParents = getParents;
|
|
37
|
-
var isSomeChildChecked = function isSomeChildChecked(node, value, itemKeys) {
|
|
38
|
-
var childrenKey = itemKeys.childrenKey,
|
|
39
|
-
valueKey = itemKeys.valueKey;
|
|
40
|
-
if (!node[childrenKey] || !value) {
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
43
|
-
return node[childrenKey].some(function (child) {
|
|
44
|
-
var _child$childrenKey;
|
|
45
|
-
if (value.some(function (n) {
|
|
46
|
-
return n === child[valueKey];
|
|
47
|
-
})) {
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
|
-
if ((_child$childrenKey = child[childrenKey]) !== null && _child$childrenKey !== void 0 && _child$childrenKey.length) {
|
|
51
|
-
return isSomeChildChecked(child, value, itemKeys);
|
|
52
|
-
}
|
|
53
|
-
return false;
|
|
54
|
-
});
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Check if the parent is selected.
|
|
59
|
-
* @param node
|
|
60
|
-
* @param value
|
|
61
|
-
* @param itemKeys
|
|
62
|
-
*/
|
|
63
|
-
exports.isSomeChildChecked = isSomeChildChecked;
|
|
64
|
-
var isSomeParentChecked = function isSomeParentChecked(node, value, itemKeys) {
|
|
65
|
-
var valueKey = itemKeys.valueKey;
|
|
66
|
-
if (!value) {
|
|
67
|
-
return false;
|
|
68
|
-
}
|
|
69
|
-
if (value.some(function (n) {
|
|
70
|
-
return n === node[valueKey];
|
|
71
|
-
})) {
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
if (node.parent) {
|
|
75
|
-
return isSomeParentChecked(node.parent, value, itemKeys);
|
|
76
|
-
}
|
|
77
|
-
return false;
|
|
78
|
-
};
|
|
79
|
-
exports.isSomeParentChecked = isSomeParentChecked;
|
|
80
|
-
var getOtherItemValuesByUnselectChild = function getOtherItemValuesByUnselectChild(itemNode, value, itemKeys) {
|
|
81
|
-
var valueKey = itemKeys.valueKey,
|
|
82
|
-
childrenKey = itemKeys.childrenKey;
|
|
83
|
-
var parentValues = [];
|
|
84
|
-
var itemValues = [];
|
|
85
|
-
|
|
86
|
-
// Find the parent node of the current node by value
|
|
87
|
-
function findParent(item) {
|
|
88
|
-
parentValues.push(item[valueKey]);
|
|
89
|
-
if (value.some(function (v) {
|
|
90
|
-
return v === item[valueKey];
|
|
91
|
-
})) {
|
|
92
|
-
return item;
|
|
93
|
-
}
|
|
94
|
-
if (item.parent) {
|
|
95
|
-
var p = findParent(item.parent);
|
|
96
|
-
if (p) {
|
|
97
|
-
return p;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// Get child nodes through parent node
|
|
104
|
-
function pushChildValue(item) {
|
|
105
|
-
if (!item[childrenKey]) {
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
item[childrenKey].forEach(function (n) {
|
|
109
|
-
// Determine whether it is a direct parent
|
|
110
|
-
if (parentValues.some(function (v) {
|
|
111
|
-
return v === n[valueKey];
|
|
112
|
-
}) && n[childrenKey]) {
|
|
113
|
-
pushChildValue(n);
|
|
114
|
-
} else if (n[valueKey] !== itemNode[valueKey]) {
|
|
115
|
-
itemValues.push(n[valueKey]);
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
var parent = findParent(itemNode);
|
|
120
|
-
if (!parent) {
|
|
121
|
-
return [];
|
|
122
|
-
}
|
|
123
|
-
pushChildValue(parent);
|
|
124
|
-
return itemValues;
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Remove the values of all children.
|
|
129
|
-
*/
|
|
130
|
-
exports.getOtherItemValuesByUnselectChild = getOtherItemValuesByUnselectChild;
|
|
131
|
-
var removeAllChildrenValue = function removeAllChildrenValue(value, item, itemKeys) {
|
|
132
|
-
var valueKey = itemKeys.valueKey,
|
|
133
|
-
childrenKey = itemKeys.childrenKey;
|
|
134
|
-
var removedValue = [];
|
|
135
|
-
if (!item[childrenKey]) {
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
item[childrenKey].forEach(function (n) {
|
|
139
|
-
removedValue = removedValue.concat((0, _remove.default)(value, function (v) {
|
|
140
|
-
return v === n[valueKey];
|
|
141
|
-
}));
|
|
142
|
-
if (n[childrenKey]) {
|
|
143
|
-
removeAllChildrenValue(value, n, itemKeys);
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
return removedValue;
|
|
147
|
-
};
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* A hook to flatten tree structure data
|
|
151
|
-
* @param data
|
|
152
|
-
*/
|
|
153
|
-
exports.removeAllChildrenValue = removeAllChildrenValue;
|
|
154
|
-
function useFlattenData(data, itemKeys) {
|
|
155
|
-
var childrenKey = itemKeys.childrenKey;
|
|
156
|
-
var _useState = (0, _react.useState)((0, _treeUtils.UNSAFE_flattenTree)(data, itemKeys.childrenKey)),
|
|
157
|
-
flattenData = _useState[0],
|
|
158
|
-
setFlattenData = _useState[1];
|
|
159
|
-
var addFlattenData = (0, _react.useCallback)(function (children, parent) {
|
|
160
|
-
var nodes = children.map(function (child) {
|
|
161
|
-
return (0, _attachParent.attachParent)(child, parent);
|
|
162
|
-
});
|
|
163
|
-
parent[childrenKey] = nodes;
|
|
164
|
-
setFlattenData([].concat(flattenData, nodes));
|
|
165
|
-
}, [childrenKey, flattenData]);
|
|
166
|
-
(0, _react.useEffect)(function () {
|
|
167
|
-
setFlattenData((0, _treeUtils.UNSAFE_flattenTree)(data, itemKeys.childrenKey));
|
|
168
|
-
}, [data, itemKeys.childrenKey]);
|
|
169
|
-
return {
|
|
170
|
-
addFlattenData: addFlattenData,
|
|
171
|
-
flattenData: flattenData
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* A hook for column data
|
|
177
|
-
* @param flattenData
|
|
178
|
-
*/
|
|
179
|
-
function useColumnData(flattenData) {
|
|
180
|
-
// The columns displayed in the cascading panel.
|
|
181
|
-
var _useState2 = (0, _react.useState)([flattenData.filter(function (item) {
|
|
182
|
-
return !item.parent;
|
|
183
|
-
})]),
|
|
184
|
-
columnData = _useState2[0],
|
|
185
|
-
setColumnData = _useState2[1];
|
|
186
|
-
/**
|
|
187
|
-
* Add a list of options to the cascading panel. Used for lazy loading options.
|
|
188
|
-
* @param column
|
|
189
|
-
* @param index The index of the current column.
|
|
190
|
-
*/
|
|
191
|
-
function addColumn(column, index) {
|
|
192
|
-
setColumnData([].concat((0, _slice.default)(columnData, 0, index), [column]));
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
/**
|
|
196
|
-
* Remove subsequent columns of the specified column
|
|
197
|
-
* @param index
|
|
198
|
-
*/
|
|
199
|
-
function removeColumnByIndex(index) {
|
|
200
|
-
setColumnData([].concat((0, _slice.default)(columnData, 0, index)));
|
|
201
|
-
}
|
|
202
|
-
function enforceUpdateColumnData(nextData) {
|
|
203
|
-
var nextFlattenData = (0, _treeUtils.UNSAFE_flattenTree)(nextData);
|
|
204
|
-
setColumnData([nextFlattenData.filter(function (item) {
|
|
205
|
-
return !item.parent;
|
|
206
|
-
})]);
|
|
207
|
-
}
|
|
208
|
-
return {
|
|
209
|
-
columnData: columnData,
|
|
210
|
-
addColumn: addColumn,
|
|
211
|
-
removeColumnByIndex: removeColumnByIndex,
|
|
212
|
-
setColumnData: setColumnData,
|
|
213
|
-
enforceUpdateColumnData: enforceUpdateColumnData
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* A hook that converts the value into a cascading value
|
|
219
|
-
* @param props
|
|
220
|
-
* @param flattenData
|
|
221
|
-
*/
|
|
222
|
-
function useCascadeValue(props, flattenData) {
|
|
223
|
-
var valueKey = props.valueKey,
|
|
224
|
-
childrenKey = props.childrenKey,
|
|
225
|
-
uncheckableItemValues = props.uncheckableItemValues,
|
|
226
|
-
cascade = props.cascade,
|
|
227
|
-
valueProp = props.value;
|
|
228
|
-
/**
|
|
229
|
-
* Get the values of all children
|
|
230
|
-
*/
|
|
231
|
-
var getChildrenValue = (0, _react.useCallback)(function (item) {
|
|
232
|
-
var values = [];
|
|
233
|
-
if (!item[childrenKey]) {
|
|
234
|
-
return values;
|
|
235
|
-
}
|
|
236
|
-
item[childrenKey].forEach(function (n) {
|
|
237
|
-
if (uncheckableItemValues && !uncheckableItemValues.some(function (v) {
|
|
238
|
-
return v === n[valueKey];
|
|
239
|
-
})) {
|
|
240
|
-
values.push(n[valueKey]);
|
|
241
|
-
}
|
|
242
|
-
values = values.concat(getChildrenValue(n));
|
|
243
|
-
});
|
|
244
|
-
return values;
|
|
245
|
-
}, [childrenKey, uncheckableItemValues, valueKey]);
|
|
246
|
-
var splitValue = (0, _react.useCallback)(function (item, checked, value) {
|
|
247
|
-
var itemValue = item[valueKey];
|
|
248
|
-
var childrenValue = getChildrenValue(item);
|
|
249
|
-
var parents = getParents(item);
|
|
250
|
-
var nextValue = [].concat(value);
|
|
251
|
-
var removedValue = [];
|
|
252
|
-
if (checked) {
|
|
253
|
-
nextValue.push(itemValue);
|
|
254
|
-
|
|
255
|
-
// Delete all values under the current node
|
|
256
|
-
removedValue = removedValue.concat(removeAllChildrenValue(nextValue, item, {
|
|
257
|
-
valueKey: valueKey,
|
|
258
|
-
childrenKey: childrenKey
|
|
259
|
-
}) || []);
|
|
260
|
-
|
|
261
|
-
// Traverse all ancestor nodes of the current node
|
|
262
|
-
// Then determine whether all the child nodes of these nodes are selected, and then they themselves must be selected
|
|
263
|
-
var _loop = function _loop(i) {
|
|
264
|
-
// Whether the parent node can be selected
|
|
265
|
-
var isCheckableParent = !(uncheckableItemValues !== null && uncheckableItemValues !== void 0 && uncheckableItemValues.some(function (v) {
|
|
266
|
-
return v === parents[i][valueKey];
|
|
267
|
-
}));
|
|
268
|
-
if (isCheckableParent) {
|
|
269
|
-
var isCheckAll = parents[i][childrenKey]
|
|
270
|
-
// Filter out options that are marked as not selectable
|
|
271
|
-
.filter(function (n) {
|
|
272
|
-
return !(uncheckableItemValues !== null && uncheckableItemValues !== void 0 && uncheckableItemValues.some(function (v) {
|
|
273
|
-
return v === n[valueKey];
|
|
274
|
-
}));
|
|
275
|
-
})
|
|
276
|
-
// Check if all nodes are selected
|
|
277
|
-
.every(function (n) {
|
|
278
|
-
return nextValue.some(function (v) {
|
|
279
|
-
return v === n[valueKey];
|
|
280
|
-
});
|
|
281
|
-
});
|
|
282
|
-
if (isCheckAll) {
|
|
283
|
-
// Add parent node value
|
|
284
|
-
nextValue.push(parents[i][valueKey]);
|
|
285
|
-
|
|
286
|
-
// Delete all values under the parent node
|
|
287
|
-
removedValue = removedValue.concat(removeAllChildrenValue(nextValue, parents[i], {
|
|
288
|
-
valueKey: valueKey,
|
|
289
|
-
childrenKey: childrenKey
|
|
290
|
-
}) || []);
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
};
|
|
294
|
-
for (var i = 0; i < parents.length; i++) {
|
|
295
|
-
_loop(i);
|
|
296
|
-
}
|
|
297
|
-
} else {
|
|
298
|
-
var tempValue = childrenValue.concat(parents.map(function (item) {
|
|
299
|
-
return item[valueKey];
|
|
300
|
-
}));
|
|
301
|
-
nextValue = nextValue.concat(getOtherItemValuesByUnselectChild(item, nextValue, {
|
|
302
|
-
valueKey: valueKey,
|
|
303
|
-
childrenKey: childrenKey
|
|
304
|
-
}));
|
|
305
|
-
|
|
306
|
-
// Delete related child and parent nodes
|
|
307
|
-
removedValue = (0, _remove.default)(nextValue, function (v) {
|
|
308
|
-
// Delete yourself
|
|
309
|
-
if (v === itemValue) {
|
|
310
|
-
return true;
|
|
311
|
-
}
|
|
312
|
-
return tempValue.some(function (n) {
|
|
313
|
-
return n === v;
|
|
314
|
-
});
|
|
315
|
-
});
|
|
316
|
-
}
|
|
317
|
-
var uniqValue = (0, _uniq.default)(nextValue);
|
|
318
|
-
var uniqRemovedValue = (0, _uniq.default)(removedValue);
|
|
319
|
-
return {
|
|
320
|
-
value: uniqValue,
|
|
321
|
-
removedValue: uniqRemovedValue
|
|
322
|
-
};
|
|
323
|
-
}, [valueKey, childrenKey, uncheckableItemValues, getChildrenValue]);
|
|
324
|
-
var transformValue = (0, _react.useCallback)(function (value) {
|
|
325
|
-
if (value === void 0) {
|
|
326
|
-
value = [];
|
|
327
|
-
}
|
|
328
|
-
if (!cascade) {
|
|
329
|
-
return value;
|
|
330
|
-
}
|
|
331
|
-
var tempRemovedValue = [];
|
|
332
|
-
var nextValue = [];
|
|
333
|
-
var _loop2 = function _loop2(i) {
|
|
334
|
-
// If the value in the current value is already in the deleted list, it will not be processed
|
|
335
|
-
if (tempRemovedValue.some(function (v) {
|
|
336
|
-
return v === value[i];
|
|
337
|
-
})) {
|
|
338
|
-
return "continue";
|
|
339
|
-
}
|
|
340
|
-
var item = flattenData.find(function (v) {
|
|
341
|
-
return v[valueKey] === value[i];
|
|
342
|
-
});
|
|
343
|
-
if (!item) {
|
|
344
|
-
return "continue";
|
|
345
|
-
}
|
|
346
|
-
var sv = splitValue(item, true, value);
|
|
347
|
-
tempRemovedValue = (0, _uniq.default)(tempRemovedValue.concat(sv.removedValue));
|
|
348
|
-
|
|
349
|
-
// Get all relevant values
|
|
350
|
-
nextValue = (0, _uniq.default)(nextValue.concat(sv.value));
|
|
351
|
-
};
|
|
352
|
-
for (var i = 0; i < value.length; i++) {
|
|
353
|
-
var _ret = _loop2(i);
|
|
354
|
-
if (_ret === "continue") continue;
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
// Finally traverse all nextValue, and delete if its parent node is also nextValue
|
|
358
|
-
return nextValue.filter(function (v) {
|
|
359
|
-
var item = flattenData.find(function (n) {
|
|
360
|
-
return n[valueKey] === v;
|
|
361
|
-
});
|
|
362
|
-
if (item !== null && item !== void 0 && item.parent && nextValue.some(function (v) {
|
|
363
|
-
return v === item.parent && item.parent[valueKey];
|
|
364
|
-
})) {
|
|
365
|
-
return false;
|
|
366
|
-
}
|
|
367
|
-
return true;
|
|
368
|
-
});
|
|
369
|
-
}, [cascade, flattenData, splitValue, valueKey]);
|
|
370
|
-
var _useState3 = (0, _react.useState)(transformValue(valueProp) || []),
|
|
371
|
-
value = _useState3[0],
|
|
372
|
-
setValue = _useState3[1];
|
|
373
|
-
(0, _react.useEffect)(function () {
|
|
374
|
-
// Update value when valueProp is updated.
|
|
375
|
-
setValue(transformValue(valueProp) || []);
|
|
376
|
-
}, [transformValue, valueProp]);
|
|
377
|
-
return {
|
|
378
|
-
value: value,
|
|
379
|
-
setValue: setValue,
|
|
380
|
-
splitValue: splitValue
|
|
381
|
-
};
|
|
382
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ItemDataType, WithAsProps, RsRefForwardingComponent } from '../@types/common';
|
|
3
|
-
import { ValueType } from './Cascader';
|
|
4
|
-
declare type SetLike<T = unknown> = {
|
|
5
|
-
has(value: T): boolean;
|
|
6
|
-
};
|
|
7
|
-
export interface TreeViewProps extends Omit<WithAsProps, 'classPrefix'> {
|
|
8
|
-
classPrefix: string;
|
|
9
|
-
disabledItemValues: ValueType[];
|
|
10
|
-
activeItemValue?: ValueType | null;
|
|
11
|
-
childrenKey: string;
|
|
12
|
-
cascadeData: (readonly ItemDataType[])[];
|
|
13
|
-
loadingItemsSet?: SetLike<ItemDataType>;
|
|
14
|
-
cascadePaths: ItemDataType[];
|
|
15
|
-
valueKey: string;
|
|
16
|
-
labelKey: string;
|
|
17
|
-
menuWidth?: number;
|
|
18
|
-
menuHeight?: number | string;
|
|
19
|
-
renderMenuItem?: (itemLabel: React.ReactNode, item: ItemDataType) => React.ReactNode;
|
|
20
|
-
renderMenu?: (items: readonly ItemDataType[], menu: React.ReactNode, parentNode?: ItemDataType, layer?: number) => React.ReactNode;
|
|
21
|
-
onSelect?: (node: ItemDataType, cascadePaths: ItemDataType[], isLeafNode: boolean, event: React.MouseEvent) => void;
|
|
22
|
-
}
|
|
23
|
-
declare const TreeView: RsRefForwardingComponent<'div', TreeViewProps>;
|
|
24
|
-
export default TreeView;
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
-
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
|
-
import React, { useEffect, useRef } from 'react';
|
|
5
|
-
import SpinnerIcon from '@rsuite/icons/legacy/Spinner';
|
|
6
|
-
import isUndefined from 'lodash/isUndefined';
|
|
7
|
-
import isNil from 'lodash/isNil';
|
|
8
|
-
import { shallowEqual, useClassNames, mergeRefs, useCustom, useEventCallback } from '../utils';
|
|
9
|
-
import { ListItem, useCombobox } from '../internals/Picker';
|
|
10
|
-
import AngleLeftIcon from '@rsuite/icons/legacy/AngleLeft';
|
|
11
|
-
import AngleRightIcon from '@rsuite/icons/legacy/AngleRight';
|
|
12
|
-
import getPosition from 'dom-lib/getPosition';
|
|
13
|
-
import scrollTop from 'dom-lib/scrollTop';
|
|
14
|
-
var emptyArray = [];
|
|
15
|
-
var TreeView = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
16
|
-
var _props$as = props.as,
|
|
17
|
-
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
18
|
-
activeItemValue = props.activeItemValue,
|
|
19
|
-
classPrefix = props.classPrefix,
|
|
20
|
-
className = props.className,
|
|
21
|
-
_props$childrenKey = props.childrenKey,
|
|
22
|
-
childrenKey = _props$childrenKey === void 0 ? 'children' : _props$childrenKey,
|
|
23
|
-
_props$disabledItemVa = props.disabledItemValues,
|
|
24
|
-
disabledItemValues = _props$disabledItemVa === void 0 ? emptyArray : _props$disabledItemVa,
|
|
25
|
-
_props$menuWidth = props.menuWidth,
|
|
26
|
-
menuWidth = _props$menuWidth === void 0 ? 120 : _props$menuWidth,
|
|
27
|
-
_props$menuHeight = props.menuHeight,
|
|
28
|
-
menuHeight = _props$menuHeight === void 0 ? 200 : _props$menuHeight,
|
|
29
|
-
_props$valueKey = props.valueKey,
|
|
30
|
-
valueKey = _props$valueKey === void 0 ? 'value' : _props$valueKey,
|
|
31
|
-
_props$cascadeData = props.cascadeData,
|
|
32
|
-
cascadeData = _props$cascadeData === void 0 ? emptyArray : _props$cascadeData,
|
|
33
|
-
_props$cascadePaths = props.cascadePaths,
|
|
34
|
-
cascadePaths = _props$cascadePaths === void 0 ? emptyArray : _props$cascadePaths,
|
|
35
|
-
loadingItemsSet = props.loadingItemsSet,
|
|
36
|
-
_props$labelKey = props.labelKey,
|
|
37
|
-
labelKey = _props$labelKey === void 0 ? 'label' : _props$labelKey,
|
|
38
|
-
style = props.style,
|
|
39
|
-
renderMenu = props.renderMenu,
|
|
40
|
-
renderMenuItem = props.renderMenuItem,
|
|
41
|
-
onSelect = props.onSelect,
|
|
42
|
-
rest = _objectWithoutPropertiesLoose(props, ["as", "activeItemValue", "classPrefix", "className", "childrenKey", "disabledItemValues", "menuWidth", "menuHeight", "valueKey", "cascadeData", "cascadePaths", "loadingItemsSet", "labelKey", "style", "renderMenu", "renderMenuItem", "onSelect"]);
|
|
43
|
-
var _useClassNames = useClassNames(classPrefix),
|
|
44
|
-
merge = _useClassNames.merge,
|
|
45
|
-
prefix = _useClassNames.prefix;
|
|
46
|
-
var classes = merge(className, prefix('items'));
|
|
47
|
-
var rootRef = useRef();
|
|
48
|
-
var _useCustom = useCustom(),
|
|
49
|
-
rtl = _useCustom.rtl;
|
|
50
|
-
var _useCombobox = useCombobox(),
|
|
51
|
-
id = _useCombobox.id,
|
|
52
|
-
labelId = _useCombobox.labelId,
|
|
53
|
-
popupType = _useCombobox.popupType;
|
|
54
|
-
useEffect(function () {
|
|
55
|
-
var _rootRef$current;
|
|
56
|
-
var columns = ((_rootRef$current = rootRef.current) === null || _rootRef$current === void 0 ? void 0 : _rootRef$current.querySelectorAll('[data-type="column"]')) || [];
|
|
57
|
-
columns.forEach(function (column) {
|
|
58
|
-
if (!column) {
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
var activeItem = column.querySelector("." + prefix('item-focus'));
|
|
62
|
-
if (!activeItem) {
|
|
63
|
-
activeItem = column.querySelector("." + prefix('item-active'));
|
|
64
|
-
}
|
|
65
|
-
if (activeItem) {
|
|
66
|
-
var position = getPosition(activeItem, column);
|
|
67
|
-
// Let the active option scroll into view.
|
|
68
|
-
if (position !== null && position !== void 0 && position.top) {
|
|
69
|
-
scrollTop(column, position === null || position === void 0 ? void 0 : position.top);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
}, [prefix]);
|
|
74
|
-
var getCascadePaths = function getCascadePaths(layer, node) {
|
|
75
|
-
var paths = [];
|
|
76
|
-
for (var i = 0; i < cascadeData.length && i < layer; i += 1) {
|
|
77
|
-
if (i < layer - 1 && cascadePaths) {
|
|
78
|
-
paths.push(cascadePaths[i]);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
paths.push(node);
|
|
82
|
-
return paths;
|
|
83
|
-
};
|
|
84
|
-
var handleSelect = useEventCallback(function (layer, node, event) {
|
|
85
|
-
var isLeafNode = isNil(node[childrenKey]);
|
|
86
|
-
var cascadePaths = getCascadePaths(layer + 1, node);
|
|
87
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, isLeafNode, event);
|
|
88
|
-
});
|
|
89
|
-
var renderCascadeNode = function renderCascadeNode(nodeProps) {
|
|
90
|
-
var _loadingItemsSet$has;
|
|
91
|
-
var node = nodeProps.node,
|
|
92
|
-
index = nodeProps.index,
|
|
93
|
-
layer = nodeProps.layer,
|
|
94
|
-
focus = nodeProps.focus,
|
|
95
|
-
size = nodeProps.size;
|
|
96
|
-
var children = node[childrenKey];
|
|
97
|
-
var value = node[valueKey];
|
|
98
|
-
var label = node[labelKey];
|
|
99
|
-
var disabled = disabledItemValues.some(function (disabledValue) {
|
|
100
|
-
return shallowEqual(disabledValue, value);
|
|
101
|
-
});
|
|
102
|
-
var loading = (_loadingItemsSet$has = loadingItemsSet === null || loadingItemsSet === void 0 ? void 0 : loadingItemsSet.has(node)) !== null && _loadingItemsSet$has !== void 0 ? _loadingItemsSet$has : false;
|
|
103
|
-
|
|
104
|
-
// Use `value` in keys when If `value` is string or number
|
|
105
|
-
var onlyKey = typeof value === 'number' || typeof value === 'string' ? value : index;
|
|
106
|
-
var Icon = loading ? SpinnerIcon : rtl ? AngleLeftIcon : AngleRightIcon;
|
|
107
|
-
return /*#__PURE__*/React.createElement(ListItem, {
|
|
108
|
-
as: 'li',
|
|
109
|
-
role: "treeitem",
|
|
110
|
-
"aria-level": layer + 1,
|
|
111
|
-
"aria-setsize": size,
|
|
112
|
-
"aria-posinset": index + 1,
|
|
113
|
-
"aria-label": typeof label === 'string' ? label : undefined,
|
|
114
|
-
classPrefix: "picker-cascader-menu-item",
|
|
115
|
-
key: layer + "-" + onlyKey,
|
|
116
|
-
disabled: disabled,
|
|
117
|
-
active: !isUndefined(activeItemValue) && shallowEqual(activeItemValue, value),
|
|
118
|
-
focus: focus,
|
|
119
|
-
value: value,
|
|
120
|
-
className: children ? prefix('has-children') : undefined,
|
|
121
|
-
onSelect: function onSelect(_value, event) {
|
|
122
|
-
return handleSelect(layer, node, event);
|
|
123
|
-
}
|
|
124
|
-
}, renderMenuItem ? renderMenuItem(label, node) : label, children ? /*#__PURE__*/React.createElement(Icon, {
|
|
125
|
-
className: prefix('caret'),
|
|
126
|
-
spin: loading
|
|
127
|
-
}) : null);
|
|
128
|
-
};
|
|
129
|
-
var cascadeNodes = cascadeData.map(function (children, layer) {
|
|
130
|
-
var onlyKey = layer + "_" + children.length;
|
|
131
|
-
var parentNode = cascadePaths[layer - 1];
|
|
132
|
-
var menu = /*#__PURE__*/React.createElement(React.Fragment, null, children.map(function (item, index) {
|
|
133
|
-
var focus = cascadePaths[layer] && shallowEqual(cascadePaths[layer][valueKey], item[valueKey]);
|
|
134
|
-
return renderCascadeNode({
|
|
135
|
-
node: item,
|
|
136
|
-
index: index,
|
|
137
|
-
layer: layer,
|
|
138
|
-
focus: focus,
|
|
139
|
-
size: children.length
|
|
140
|
-
});
|
|
141
|
-
}));
|
|
142
|
-
return /*#__PURE__*/React.createElement("ul", {
|
|
143
|
-
role: "group",
|
|
144
|
-
"data-layer": layer,
|
|
145
|
-
"data-type": 'column',
|
|
146
|
-
key: onlyKey,
|
|
147
|
-
className: prefix('column'),
|
|
148
|
-
style: {
|
|
149
|
-
height: menuHeight,
|
|
150
|
-
width: menuWidth
|
|
151
|
-
}
|
|
152
|
-
}, renderMenu ? renderMenu(children, menu, parentNode, layer) : menu);
|
|
153
|
-
});
|
|
154
|
-
var styles = _extends({}, style, {
|
|
155
|
-
width: cascadeData.length * menuWidth
|
|
156
|
-
});
|
|
157
|
-
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
158
|
-
role: "tree",
|
|
159
|
-
id: id + "-" + popupType,
|
|
160
|
-
"aria-labelledby": labelId
|
|
161
|
-
}, rest, {
|
|
162
|
-
ref: mergeRefs(rootRef, ref),
|
|
163
|
-
className: classes,
|
|
164
|
-
style: styles
|
|
165
|
-
}), cascadeNodes);
|
|
166
|
-
});
|
|
167
|
-
TreeView.displayName = 'TreeView';
|
|
168
|
-
export default TreeView;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ItemDataType, WithAsProps, RsRefForwardingComponent } from '../@types/common';
|
|
3
|
-
import { ValueType } from './Cascader';
|
|
4
|
-
declare type SetLike<T = unknown> = {
|
|
5
|
-
has(value: T): boolean;
|
|
6
|
-
};
|
|
7
|
-
export interface TreeViewProps extends Omit<WithAsProps, 'classPrefix'> {
|
|
8
|
-
classPrefix: string;
|
|
9
|
-
disabledItemValues: ValueType[];
|
|
10
|
-
activeItemValue?: ValueType | null;
|
|
11
|
-
childrenKey: string;
|
|
12
|
-
cascadeData: (readonly ItemDataType[])[];
|
|
13
|
-
loadingItemsSet?: SetLike<ItemDataType>;
|
|
14
|
-
cascadePaths: ItemDataType[];
|
|
15
|
-
valueKey: string;
|
|
16
|
-
labelKey: string;
|
|
17
|
-
menuWidth?: number;
|
|
18
|
-
menuHeight?: number | string;
|
|
19
|
-
renderMenuItem?: (itemLabel: React.ReactNode, item: ItemDataType) => React.ReactNode;
|
|
20
|
-
renderMenu?: (items: readonly ItemDataType[], menu: React.ReactNode, parentNode?: ItemDataType, layer?: number) => React.ReactNode;
|
|
21
|
-
onSelect?: (node: ItemDataType, cascadePaths: ItemDataType[], isLeafNode: boolean, event: React.MouseEvent) => void;
|
|
22
|
-
}
|
|
23
|
-
declare const TreeView: RsRefForwardingComponent<'div', TreeViewProps>;
|
|
24
|
-
export default TreeView;
|
package/esm/Cascader/utils.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { useMemo } from 'react';
|
|
3
|
-
import { getPathTowardsItem } from '../utils/treeUtils';
|
|
4
|
-
/**
|
|
5
|
-
* Calculate columns to be displayed:
|
|
6
|
-
*
|
|
7
|
-
* - Every ancestor level of activeItem should be displayed
|
|
8
|
-
* - The level that activeItem is at should be displayed
|
|
9
|
-
* - If activeItem is a parent node, its child level should be displayed
|
|
10
|
-
*
|
|
11
|
-
* @param items
|
|
12
|
-
* @param value
|
|
13
|
-
* @param options
|
|
14
|
-
* @returns
|
|
15
|
-
*/
|
|
16
|
-
export function getColumnsAndPaths(items, pathTarget, options) {
|
|
17
|
-
var getParent = options.getParent,
|
|
18
|
-
getChildren = options.getChildren;
|
|
19
|
-
if (!pathTarget) {
|
|
20
|
-
return {
|
|
21
|
-
columns: [items],
|
|
22
|
-
path: []
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
var columns = [];
|
|
26
|
-
var path = [pathTarget];
|
|
27
|
-
var children = getChildren(pathTarget);
|
|
28
|
-
if (children && children.length > 0) {
|
|
29
|
-
columns.unshift(children);
|
|
30
|
-
}
|
|
31
|
-
for (var parent = getParent(pathTarget); !!parent; parent = getParent(parent)) {
|
|
32
|
-
var _getChildren;
|
|
33
|
-
columns.unshift((_getChildren = getChildren(parent)) !== null && _getChildren !== void 0 ? _getChildren : []);
|
|
34
|
-
path.unshift(parent);
|
|
35
|
-
}
|
|
36
|
-
columns.unshift(items);
|
|
37
|
-
return {
|
|
38
|
-
columns: columns,
|
|
39
|
-
path: path
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Caculate following 3 things
|
|
44
|
-
*
|
|
45
|
-
* - The columns of items to be displayed
|
|
46
|
-
* - The path towards the current focused item
|
|
47
|
-
* - The path towards the current selected item (referred to by Cascader's value)
|
|
48
|
-
*
|
|
49
|
-
* @param params
|
|
50
|
-
* @returns
|
|
51
|
-
*/
|
|
52
|
-
export function usePaths(_ref) {
|
|
53
|
-
var data = _ref.data,
|
|
54
|
-
activeItem = _ref.activeItem,
|
|
55
|
-
selectedItem = _ref.selectedItem,
|
|
56
|
-
getParent = _ref.getParent,
|
|
57
|
-
getChildren = _ref.getChildren;
|
|
58
|
-
var pathTowardsSelectedItem = useMemo(function () {
|
|
59
|
-
return getPathTowardsItem(selectedItem, getParent);
|
|
60
|
-
}, [getParent, selectedItem]);
|
|
61
|
-
var _useMemo = useMemo(function () {
|
|
62
|
-
return getColumnsAndPaths(data, activeItem, {
|
|
63
|
-
getParent: getParent,
|
|
64
|
-
getChildren: getChildren
|
|
65
|
-
});
|
|
66
|
-
}, [data, activeItem, getParent, getChildren]),
|
|
67
|
-
columnsToDisplay = _useMemo.columns,
|
|
68
|
-
pathTowardsActiveItem = _useMemo.path;
|
|
69
|
-
return {
|
|
70
|
-
columnsToDisplay: columnsToDisplay,
|
|
71
|
-
pathTowardsSelectedItem: pathTowardsSelectedItem,
|
|
72
|
-
pathTowardsActiveItem: pathTowardsActiveItem
|
|
73
|
-
};
|
|
74
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ItemDataType, WithAsProps, RsRefForwardingComponent } from '../@types/common';
|
|
3
|
-
import { ValueType } from './MultiCascader';
|
|
4
|
-
export interface TreeViewProps extends WithAsProps {
|
|
5
|
-
disabledItemValues: ValueType;
|
|
6
|
-
value: ValueType;
|
|
7
|
-
childrenKey: string;
|
|
8
|
-
valueKey: string;
|
|
9
|
-
labelKey: string;
|
|
10
|
-
menuWidth?: number;
|
|
11
|
-
menuHeight?: number | string;
|
|
12
|
-
cascade?: boolean;
|
|
13
|
-
cascadeData: (readonly ItemDataType[])[];
|
|
14
|
-
cascadePaths?: ItemDataType[];
|
|
15
|
-
uncheckableItemValues: ValueType;
|
|
16
|
-
renderMenuItem?: (itemLabel: React.MouseEventHandler, item: ItemDataType) => React.ReactNode;
|
|
17
|
-
renderMenu?: (children: readonly ItemDataType[], menu: React.ReactNode, parentNode?: ItemDataType, layer?: number) => React.ReactNode;
|
|
18
|
-
onCheck?: (node: ItemDataType, event: React.SyntheticEvent, checked: boolean) => void;
|
|
19
|
-
onSelect?: (node: ItemDataType, cascadePaths: ItemDataType[], event: React.SyntheticEvent) => void;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* TODO: reuse Menu from Cascader for consistent behavior
|
|
23
|
-
*/
|
|
24
|
-
declare const TreeView: RsRefForwardingComponent<'div', TreeViewProps>;
|
|
25
|
-
export default TreeView;
|