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.
Files changed (223) hide show
  1. package/AutoComplete/styles/index.css +3 -3
  2. package/CHANGELOG.md +33 -0
  3. package/CascadeTree/package.json +7 -0
  4. package/CascadeTree/styles/index.css +273 -0
  5. package/CascadeTree/styles/index.less +77 -0
  6. package/CascadeTree/styles/search.less +45 -0
  7. package/Cascader/styles/index.css +190 -195
  8. package/Cascader/styles/index.less +1 -122
  9. package/CheckPicker/styles/index.css +142 -40
  10. package/CheckPicker/styles/index.less +1 -1
  11. package/CheckTree/styles/index.css +143 -41
  12. package/CheckTreePicker/styles/index.css +143 -41
  13. package/CheckTreePicker/styles/index.less +2 -2
  14. package/Checkbox/styles/index.css +159 -36
  15. package/Checkbox/styles/index.less +32 -13
  16. package/DatePicker/styles/index.css +3 -3
  17. package/DateRangePicker/styles/index.css +3 -3
  18. package/InputPicker/styles/index.css +3 -3
  19. package/MultiCascadeTree/package.json +7 -0
  20. package/MultiCascadeTree/styles/index.css +3701 -0
  21. package/MultiCascadeTree/styles/index.less +37 -0
  22. package/MultiCascader/styles/index.css +213 -108
  23. package/MultiCascader/styles/index.less +11 -31
  24. package/Pagination/styles/index.css +3 -3
  25. package/Radio/styles/index.css +133 -19
  26. package/Radio/styles/index.less +28 -12
  27. package/RadioGroup/styles/index.css +1 -1
  28. package/RadioGroup/styles/index.less +1 -1
  29. package/SelectPicker/styles/index.css +3 -3
  30. package/TagGroup/styles/index.css +1 -1
  31. package/TagGroup/styles/index.less +1 -1
  32. package/TagInput/styles/index.css +141 -39
  33. package/TagPicker/styles/index.css +141 -39
  34. package/cjs/@types/common.d.ts +12 -14
  35. package/cjs/CascadeTree/CascadeTree.d.ts +16 -0
  36. package/cjs/CascadeTree/CascadeTree.js +174 -0
  37. package/cjs/CascadeTree/SearchView.d.ts +17 -0
  38. package/cjs/CascadeTree/SearchView.js +106 -0
  39. package/cjs/CascadeTree/TreeView.d.ts +20 -0
  40. package/cjs/{Cascader → CascadeTree}/TreeView.js +42 -33
  41. package/cjs/CascadeTree/hooks/index.d.ts +3 -0
  42. package/cjs/CascadeTree/hooks/index.js +12 -0
  43. package/cjs/{Cascader/utils.d.ts → CascadeTree/hooks/usePaths.d.ts} +3 -25
  44. package/cjs/CascadeTree/hooks/usePaths.js +42 -0
  45. package/cjs/CascadeTree/hooks/useSearch.d.ts +17 -0
  46. package/cjs/CascadeTree/hooks/useSearch.js +59 -0
  47. package/cjs/CascadeTree/hooks/useSelect.d.ts +23 -0
  48. package/cjs/CascadeTree/hooks/useSelect.js +64 -0
  49. package/cjs/CascadeTree/index.d.ts +4 -0
  50. package/cjs/CascadeTree/index.js +9 -0
  51. package/cjs/CascadeTree/types.d.ts +66 -0
  52. package/cjs/CascadeTree/types.js +2 -0
  53. package/cjs/CascadeTree/utils.d.ts +32 -0
  54. package/cjs/CascadeTree/utils.js +66 -0
  55. package/cjs/Cascader/Cascader.d.ts +57 -26
  56. package/cjs/Cascader/Cascader.js +180 -247
  57. package/cjs/Cascader/useActive.d.ts +15 -0
  58. package/cjs/Cascader/useActive.js +43 -0
  59. package/cjs/Checkbox/Checkbox.d.ts +67 -25
  60. package/cjs/Checkbox/Checkbox.js +36 -26
  61. package/cjs/InlineEdit/InlineEdit.d.ts +1 -1
  62. package/cjs/InputPicker/InputPicker.js +2 -2
  63. package/cjs/InputPicker/InputPickerContext.d.ts +1 -1
  64. package/cjs/Loader/Loader.js +5 -4
  65. package/cjs/MultiCascadeTree/MultiCascadeTree.d.ts +9 -0
  66. package/cjs/MultiCascadeTree/MultiCascadeTree.js +131 -0
  67. package/cjs/MultiCascadeTree/SearchView.d.ts +17 -0
  68. package/cjs/MultiCascadeTree/SearchView.js +117 -0
  69. package/cjs/MultiCascadeTree/TreeView.d.ts +22 -0
  70. package/cjs/{MultiCascader → MultiCascadeTree}/TreeView.js +22 -21
  71. package/cjs/MultiCascadeTree/hooks/index.d.ts +5 -0
  72. package/cjs/MultiCascadeTree/hooks/index.js +16 -0
  73. package/cjs/MultiCascadeTree/hooks/useCascadeValue.d.ts +18 -0
  74. package/cjs/MultiCascadeTree/hooks/useCascadeValue.js +202 -0
  75. package/cjs/MultiCascadeTree/hooks/useColumnData.d.ts +16 -0
  76. package/cjs/MultiCascadeTree/hooks/useColumnData.js +52 -0
  77. package/cjs/MultiCascadeTree/hooks/useFlattenData.d.ts +9 -0
  78. package/cjs/MultiCascadeTree/hooks/useFlattenData.js +33 -0
  79. package/cjs/MultiCascadeTree/hooks/useSearch.d.ts +17 -0
  80. package/cjs/MultiCascadeTree/hooks/useSearch.js +52 -0
  81. package/cjs/MultiCascadeTree/hooks/useSelect.d.ts +19 -0
  82. package/cjs/MultiCascadeTree/hooks/useSelect.js +83 -0
  83. package/cjs/MultiCascadeTree/index.d.ts +4 -0
  84. package/cjs/MultiCascadeTree/index.js +9 -0
  85. package/cjs/MultiCascadeTree/types.d.ts +26 -0
  86. package/cjs/MultiCascadeTree/types.js +2 -0
  87. package/cjs/MultiCascadeTree/utils.d.ts +37 -0
  88. package/cjs/MultiCascadeTree/utils.js +140 -0
  89. package/cjs/MultiCascader/MultiCascader.d.ts +57 -29
  90. package/cjs/MultiCascader/MultiCascader.js +175 -287
  91. package/cjs/Radio/Radio.d.ts +42 -16
  92. package/cjs/Radio/Radio.js +42 -37
  93. package/cjs/RadioGroup/RadioGroup.d.ts +1 -1
  94. package/cjs/RadioGroup/RadioGroup.js +3 -3
  95. package/cjs/TagPicker/index.js +1 -1
  96. package/cjs/Tree/Tree.d.ts +4 -4
  97. package/cjs/index.d.ts +6 -1
  98. package/cjs/index.js +8 -3
  99. package/cjs/internals/Picker/ListCheckItem.d.ts +2 -11
  100. package/cjs/internals/Picker/ListCheckItem.js +8 -6
  101. package/cjs/internals/Picker/PickerToggle.d.ts +4 -5
  102. package/cjs/toaster/ToastContainer.d.ts +9 -2
  103. package/cjs/toaster/index.d.ts +0 -1
  104. package/cjs/toaster/index.js +1 -3
  105. package/cjs/useToaster/index.d.ts +2 -0
  106. package/cjs/useToaster/index.js +9 -0
  107. package/cjs/{toaster → useToaster}/useToaster.d.ts +4 -4
  108. package/cjs/{toaster → useToaster}/useToaster.js +4 -4
  109. package/cjs/utils/index.d.ts +1 -0
  110. package/cjs/utils/index.js +5 -2
  111. package/dist/rsuite-no-reset-rtl.css +322 -124
  112. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  113. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  114. package/dist/rsuite-no-reset.css +322 -124
  115. package/dist/rsuite-no-reset.min.css +1 -1
  116. package/dist/rsuite-no-reset.min.css.map +1 -1
  117. package/dist/rsuite-rtl.css +322 -124
  118. package/dist/rsuite-rtl.min.css +1 -1
  119. package/dist/rsuite-rtl.min.css.map +1 -1
  120. package/dist/rsuite.css +322 -124
  121. package/dist/rsuite.js +248 -50
  122. package/dist/rsuite.js.map +1 -1
  123. package/dist/rsuite.min.css +1 -1
  124. package/dist/rsuite.min.css.map +1 -1
  125. package/dist/rsuite.min.js +1 -1
  126. package/dist/rsuite.min.js.map +1 -1
  127. package/esm/@types/common.d.ts +12 -14
  128. package/esm/CascadeTree/CascadeTree.d.ts +16 -0
  129. package/esm/CascadeTree/CascadeTree.js +167 -0
  130. package/esm/CascadeTree/SearchView.d.ts +17 -0
  131. package/esm/CascadeTree/SearchView.js +100 -0
  132. package/esm/CascadeTree/TreeView.d.ts +20 -0
  133. package/esm/{Cascader → CascadeTree}/TreeView.js +42 -33
  134. package/esm/CascadeTree/hooks/index.d.ts +3 -0
  135. package/esm/CascadeTree/hooks/index.js +4 -0
  136. package/esm/{Cascader/utils.d.ts → CascadeTree/hooks/usePaths.d.ts} +3 -25
  137. package/esm/CascadeTree/hooks/usePaths.js +36 -0
  138. package/esm/CascadeTree/hooks/useSearch.d.ts +17 -0
  139. package/esm/CascadeTree/hooks/useSearch.js +54 -0
  140. package/esm/CascadeTree/hooks/useSelect.d.ts +23 -0
  141. package/esm/CascadeTree/hooks/useSelect.js +59 -0
  142. package/esm/CascadeTree/index.d.ts +4 -0
  143. package/esm/CascadeTree/index.js +3 -0
  144. package/esm/CascadeTree/types.d.ts +66 -0
  145. package/esm/CascadeTree/types.js +1 -0
  146. package/esm/CascadeTree/utils.d.ts +32 -0
  147. package/esm/CascadeTree/utils.js +61 -0
  148. package/esm/Cascader/Cascader.d.ts +57 -26
  149. package/esm/Cascader/Cascader.js +167 -233
  150. package/esm/Cascader/useActive.d.ts +15 -0
  151. package/esm/Cascader/useActive.js +37 -0
  152. package/esm/Checkbox/Checkbox.d.ts +67 -25
  153. package/esm/Checkbox/Checkbox.js +38 -28
  154. package/esm/InlineEdit/InlineEdit.d.ts +1 -1
  155. package/esm/InputPicker/InputPicker.js +2 -2
  156. package/esm/InputPicker/InputPickerContext.d.ts +1 -1
  157. package/esm/Loader/Loader.js +6 -5
  158. package/esm/MultiCascadeTree/MultiCascadeTree.d.ts +9 -0
  159. package/esm/MultiCascadeTree/MultiCascadeTree.js +125 -0
  160. package/esm/MultiCascadeTree/SearchView.d.ts +17 -0
  161. package/esm/MultiCascadeTree/SearchView.js +111 -0
  162. package/esm/MultiCascadeTree/TreeView.d.ts +22 -0
  163. package/esm/{MultiCascader → MultiCascadeTree}/TreeView.js +22 -21
  164. package/esm/MultiCascadeTree/hooks/index.d.ts +5 -0
  165. package/esm/MultiCascadeTree/hooks/index.js +6 -0
  166. package/esm/MultiCascadeTree/hooks/useCascadeValue.d.ts +18 -0
  167. package/esm/MultiCascadeTree/hooks/useCascadeValue.js +197 -0
  168. package/esm/MultiCascadeTree/hooks/useColumnData.d.ts +16 -0
  169. package/esm/MultiCascadeTree/hooks/useColumnData.js +46 -0
  170. package/esm/MultiCascadeTree/hooks/useFlattenData.d.ts +9 -0
  171. package/esm/MultiCascadeTree/hooks/useFlattenData.js +28 -0
  172. package/esm/MultiCascadeTree/hooks/useSearch.d.ts +17 -0
  173. package/esm/MultiCascadeTree/hooks/useSearch.js +47 -0
  174. package/esm/MultiCascadeTree/hooks/useSelect.d.ts +19 -0
  175. package/esm/MultiCascadeTree/hooks/useSelect.js +77 -0
  176. package/esm/MultiCascadeTree/index.d.ts +4 -0
  177. package/esm/MultiCascadeTree/index.js +3 -0
  178. package/esm/MultiCascadeTree/types.d.ts +26 -0
  179. package/esm/MultiCascadeTree/types.js +1 -0
  180. package/esm/MultiCascadeTree/utils.d.ts +37 -0
  181. package/esm/MultiCascadeTree/utils.js +130 -0
  182. package/esm/MultiCascader/MultiCascader.d.ts +57 -29
  183. package/esm/MultiCascader/MultiCascader.js +168 -279
  184. package/esm/Radio/Radio.d.ts +42 -16
  185. package/esm/Radio/Radio.js +43 -38
  186. package/esm/RadioGroup/RadioGroup.d.ts +1 -1
  187. package/esm/RadioGroup/RadioGroup.js +5 -5
  188. package/esm/TagPicker/index.js +1 -1
  189. package/esm/Tree/Tree.d.ts +4 -4
  190. package/esm/index.d.ts +6 -1
  191. package/esm/index.js +5 -1
  192. package/esm/internals/Picker/ListCheckItem.d.ts +2 -11
  193. package/esm/internals/Picker/ListCheckItem.js +8 -6
  194. package/esm/internals/Picker/PickerToggle.d.ts +4 -5
  195. package/esm/toaster/ToastContainer.d.ts +9 -2
  196. package/esm/toaster/index.d.ts +0 -1
  197. package/esm/toaster/index.js +0 -1
  198. package/esm/useToaster/index.d.ts +2 -0
  199. package/esm/useToaster/index.js +3 -0
  200. package/esm/{toaster → useToaster}/useToaster.d.ts +4 -4
  201. package/esm/{toaster → useToaster}/useToaster.js +4 -4
  202. package/esm/utils/index.d.ts +1 -0
  203. package/esm/utils/index.js +2 -1
  204. package/internals/Picker/styles/index.less +1 -1
  205. package/package.json +1 -1
  206. package/styles/index.less +2 -0
  207. package/useToaster/package.json +7 -0
  208. package/useToaster/styles/index.css +239 -0
  209. package/useToaster/styles/index.less +1 -0
  210. package/cjs/Cascader/DropdownMenu.d.ts +0 -24
  211. package/cjs/Cascader/DropdownMenu.js +0 -175
  212. package/cjs/Cascader/TreeView.d.ts +0 -24
  213. package/cjs/Cascader/utils.js +0 -79
  214. package/cjs/MultiCascader/TreeView.d.ts +0 -25
  215. package/cjs/MultiCascader/utils.d.ts +0 -71
  216. package/cjs/MultiCascader/utils.js +0 -382
  217. package/esm/Cascader/DropdownMenu.d.ts +0 -24
  218. package/esm/Cascader/DropdownMenu.js +0 -168
  219. package/esm/Cascader/TreeView.d.ts +0 -24
  220. package/esm/Cascader/utils.js +0 -74
  221. package/esm/MultiCascader/TreeView.d.ts +0 -25
  222. package/esm/MultiCascader/utils.d.ts +0 -71
  223. 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;
@@ -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;