rsuite 5.56.0 → 5.58.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 (272) hide show
  1. package/Accordion/styles/index.css +30 -0
  2. package/AutoComplete/styles/index.css +0 -137
  3. package/CHANGELOG.md +32 -0
  4. package/CascadeTree/package.json +7 -0
  5. package/CascadeTree/styles/index.css +273 -0
  6. package/CascadeTree/styles/index.less +77 -0
  7. package/CascadeTree/styles/search.less +45 -0
  8. package/Cascader/styles/index.css +187 -329
  9. package/Cascader/styles/index.less +1 -122
  10. package/CheckPicker/styles/index.css +0 -137
  11. package/CheckTree/styles/index.css +0 -137
  12. package/CheckTreePicker/styles/index.css +0 -137
  13. package/DatePicker/styles/index.css +0 -137
  14. package/DateRangePicker/styles/index.css +0 -137
  15. package/Dropdown/styles/index.css +35 -8
  16. package/Dropdown/styles/index.less +24 -13
  17. package/Heading/package.json +7 -0
  18. package/Heading/styles/index.css +42 -0
  19. package/Heading/styles/index.less +41 -0
  20. package/HeadingGroup/package.json +7 -0
  21. package/HeadingGroup/styles/index.css +5 -0
  22. package/HeadingGroup/styles/index.less +3 -0
  23. package/InputPicker/styles/index.css +29 -146
  24. package/InputPicker/styles/index.less +28 -12
  25. package/InputPicker/styles/mixin.less +7 -0
  26. package/MultiCascadeTree/package.json +7 -0
  27. package/MultiCascadeTree/styles/index.css +3564 -0
  28. package/MultiCascadeTree/styles/index.less +37 -0
  29. package/MultiCascader/styles/index.css +72 -206
  30. package/MultiCascader/styles/index.less +11 -31
  31. package/Nav/styles/index.css +35 -8
  32. package/Navbar/styles/index.css +35 -8
  33. package/Pagination/styles/index.css +0 -137
  34. package/Panel/styles/index.css +30 -0
  35. package/Panel/styles/index.less +1 -0
  36. package/Popover/styles/index.css +30 -0
  37. package/Popover/styles/index.less +3 -2
  38. package/SelectPicker/styles/index.css +0 -137
  39. package/Tabs/styles/index.css +35 -8
  40. package/TagInput/styles/index.css +132 -150
  41. package/TagPicker/styles/index.css +132 -150
  42. package/TagPicker/styles/index.less +57 -5
  43. package/TagPicker/styles/mixin.less +21 -0
  44. package/Text/package.json +7 -0
  45. package/Text/styles/index.css +192 -0
  46. package/Text/styles/index.less +117 -0
  47. package/cjs/@types/common.d.ts +12 -14
  48. package/cjs/CascadeTree/CascadeTree.d.ts +16 -0
  49. package/cjs/CascadeTree/CascadeTree.js +174 -0
  50. package/cjs/CascadeTree/SearchView.d.ts +17 -0
  51. package/cjs/CascadeTree/SearchView.js +106 -0
  52. package/cjs/CascadeTree/TreeView.d.ts +20 -0
  53. package/cjs/{Cascader → CascadeTree}/TreeView.js +42 -33
  54. package/cjs/CascadeTree/hooks/index.d.ts +3 -0
  55. package/cjs/CascadeTree/hooks/index.js +12 -0
  56. package/cjs/{Cascader/utils.d.ts → CascadeTree/hooks/usePaths.d.ts} +3 -25
  57. package/cjs/CascadeTree/hooks/usePaths.js +42 -0
  58. package/cjs/CascadeTree/hooks/useSearch.d.ts +17 -0
  59. package/cjs/CascadeTree/hooks/useSearch.js +59 -0
  60. package/cjs/CascadeTree/hooks/useSelect.d.ts +23 -0
  61. package/cjs/CascadeTree/hooks/useSelect.js +64 -0
  62. package/cjs/CascadeTree/index.d.ts +4 -0
  63. package/cjs/CascadeTree/index.js +9 -0
  64. package/cjs/CascadeTree/types.d.ts +66 -0
  65. package/cjs/CascadeTree/types.js +2 -0
  66. package/cjs/CascadeTree/utils.d.ts +32 -0
  67. package/cjs/CascadeTree/utils.js +66 -0
  68. package/cjs/Cascader/Cascader.d.ts +57 -26
  69. package/cjs/Cascader/Cascader.js +178 -249
  70. package/cjs/Cascader/useActive.d.ts +15 -0
  71. package/cjs/Cascader/useActive.js +43 -0
  72. package/cjs/CheckPicker/CheckPicker.js +2 -9
  73. package/cjs/CheckTreePicker/CheckTreePicker.js +2 -10
  74. package/cjs/DatePicker/DatePicker.js +5 -5
  75. package/cjs/DateRangePicker/DateRangePicker.js +3 -5
  76. package/cjs/Dropdown/DropdownItem.d.ts +10 -2
  77. package/cjs/Dropdown/DropdownItem.js +12 -3
  78. package/cjs/Heading/Heading.d.ts +16 -0
  79. package/cjs/Heading/Heading.js +44 -0
  80. package/cjs/Heading/index.d.ts +3 -0
  81. package/cjs/Heading/index.js +10 -0
  82. package/cjs/HeadingGroup/HeadingGroup.d.ts +8 -0
  83. package/cjs/HeadingGroup/HeadingGroup.js +17 -0
  84. package/cjs/HeadingGroup/index.d.ts +3 -0
  85. package/cjs/HeadingGroup/index.js +9 -0
  86. package/cjs/InlineEdit/InlineEdit.d.ts +1 -1
  87. package/cjs/InputPicker/InputPicker.js +7 -8
  88. package/cjs/Loader/Loader.js +5 -4
  89. package/cjs/MultiCascadeTree/MultiCascadeTree.d.ts +9 -0
  90. package/cjs/MultiCascadeTree/MultiCascadeTree.js +131 -0
  91. package/cjs/MultiCascadeTree/SearchView.d.ts +17 -0
  92. package/cjs/MultiCascadeTree/SearchView.js +117 -0
  93. package/cjs/MultiCascadeTree/TreeView.d.ts +22 -0
  94. package/cjs/{MultiCascader → MultiCascadeTree}/TreeView.js +20 -20
  95. package/cjs/MultiCascadeTree/hooks/index.d.ts +5 -0
  96. package/cjs/MultiCascadeTree/hooks/index.js +16 -0
  97. package/cjs/MultiCascadeTree/hooks/useCascadeValue.d.ts +18 -0
  98. package/cjs/MultiCascadeTree/hooks/useCascadeValue.js +202 -0
  99. package/cjs/MultiCascadeTree/hooks/useColumnData.d.ts +16 -0
  100. package/cjs/MultiCascadeTree/hooks/useColumnData.js +52 -0
  101. package/cjs/MultiCascadeTree/hooks/useFlattenData.d.ts +9 -0
  102. package/cjs/MultiCascadeTree/hooks/useFlattenData.js +33 -0
  103. package/cjs/MultiCascadeTree/hooks/useSearch.d.ts +17 -0
  104. package/cjs/MultiCascadeTree/hooks/useSearch.js +52 -0
  105. package/cjs/MultiCascadeTree/hooks/useSelect.d.ts +19 -0
  106. package/cjs/MultiCascadeTree/hooks/useSelect.js +83 -0
  107. package/cjs/MultiCascadeTree/index.d.ts +4 -0
  108. package/cjs/MultiCascadeTree/index.js +9 -0
  109. package/cjs/MultiCascadeTree/types.d.ts +26 -0
  110. package/cjs/MultiCascadeTree/types.js +2 -0
  111. package/cjs/MultiCascadeTree/utils.d.ts +37 -0
  112. package/cjs/MultiCascadeTree/utils.js +140 -0
  113. package/cjs/MultiCascader/MultiCascader.d.ts +57 -29
  114. package/cjs/MultiCascader/MultiCascader.js +173 -289
  115. package/cjs/Panel/Panel.js +3 -1
  116. package/cjs/Popover/Popover.js +3 -1
  117. package/cjs/SelectPicker/SelectPicker.js +3 -9
  118. package/cjs/Text/Text.d.ts +47 -0
  119. package/cjs/Text/Text.js +72 -0
  120. package/cjs/Text/index.d.ts +3 -0
  121. package/cjs/Text/index.js +10 -0
  122. package/cjs/Tree/Tree.d.ts +4 -4
  123. package/cjs/TreePicker/TreePicker.js +3 -10
  124. package/cjs/index.d.ts +27 -16
  125. package/cjs/index.js +30 -19
  126. package/cjs/internals/Overlay/OverlayTrigger.js +24 -17
  127. package/cjs/internals/Picker/PickerToggle.d.ts +4 -5
  128. package/cjs/internals/Picker/PickerToggleTrigger.d.ts +1 -1
  129. package/cjs/internals/Picker/PickerToggleTrigger.js +1 -1
  130. package/cjs/internals/Picker/hooks/useToggleKeyDownEvent.d.ts +0 -2
  131. package/cjs/internals/Picker/hooks/useToggleKeyDownEvent.js +0 -4
  132. package/cjs/toaster/ToastContainer.d.ts +9 -2
  133. package/cjs/toaster/index.d.ts +0 -1
  134. package/cjs/toaster/index.js +1 -3
  135. package/cjs/useToaster/index.d.ts +2 -0
  136. package/cjs/useToaster/index.js +9 -0
  137. package/cjs/{toaster → useToaster}/useToaster.d.ts +4 -4
  138. package/cjs/{toaster → useToaster}/useToaster.js +4 -4
  139. package/cjs/utils/index.d.ts +1 -0
  140. package/cjs/utils/index.js +5 -2
  141. package/dist/rsuite-no-reset-rtl.css +393 -219
  142. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  143. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  144. package/dist/rsuite-no-reset.css +393 -219
  145. package/dist/rsuite-no-reset.min.css +1 -1
  146. package/dist/rsuite-no-reset.min.css.map +1 -1
  147. package/dist/rsuite-rtl.css +393 -219
  148. package/dist/rsuite-rtl.min.css +1 -1
  149. package/dist/rsuite-rtl.min.css.map +1 -1
  150. package/dist/rsuite.css +393 -219
  151. package/dist/rsuite.js +321 -57
  152. package/dist/rsuite.js.map +1 -1
  153. package/dist/rsuite.min.css +1 -1
  154. package/dist/rsuite.min.css.map +1 -1
  155. package/dist/rsuite.min.js +1 -1
  156. package/dist/rsuite.min.js.map +1 -1
  157. package/esm/@types/common.d.ts +12 -14
  158. package/esm/CascadeTree/CascadeTree.d.ts +16 -0
  159. package/esm/CascadeTree/CascadeTree.js +167 -0
  160. package/esm/CascadeTree/SearchView.d.ts +17 -0
  161. package/esm/CascadeTree/SearchView.js +100 -0
  162. package/esm/CascadeTree/TreeView.d.ts +20 -0
  163. package/esm/{Cascader → CascadeTree}/TreeView.js +42 -33
  164. package/esm/CascadeTree/hooks/index.d.ts +3 -0
  165. package/esm/CascadeTree/hooks/index.js +4 -0
  166. package/esm/{Cascader/utils.d.ts → CascadeTree/hooks/usePaths.d.ts} +3 -25
  167. package/esm/CascadeTree/hooks/usePaths.js +36 -0
  168. package/esm/CascadeTree/hooks/useSearch.d.ts +17 -0
  169. package/esm/CascadeTree/hooks/useSearch.js +54 -0
  170. package/esm/CascadeTree/hooks/useSelect.d.ts +23 -0
  171. package/esm/CascadeTree/hooks/useSelect.js +59 -0
  172. package/esm/CascadeTree/index.d.ts +4 -0
  173. package/esm/CascadeTree/index.js +3 -0
  174. package/esm/CascadeTree/types.d.ts +66 -0
  175. package/esm/CascadeTree/types.js +1 -0
  176. package/esm/CascadeTree/utils.d.ts +32 -0
  177. package/esm/CascadeTree/utils.js +61 -0
  178. package/esm/Cascader/Cascader.d.ts +57 -26
  179. package/esm/Cascader/Cascader.js +165 -235
  180. package/esm/Cascader/useActive.d.ts +15 -0
  181. package/esm/Cascader/useActive.js +37 -0
  182. package/esm/CheckPicker/CheckPicker.js +2 -9
  183. package/esm/CheckTreePicker/CheckTreePicker.js +2 -10
  184. package/esm/DatePicker/DatePicker.js +6 -6
  185. package/esm/DateRangePicker/DateRangePicker.js +3 -5
  186. package/esm/Dropdown/DropdownItem.d.ts +10 -2
  187. package/esm/Dropdown/DropdownItem.js +12 -3
  188. package/esm/Heading/Heading.d.ts +16 -0
  189. package/esm/Heading/Heading.js +38 -0
  190. package/esm/Heading/index.d.ts +3 -0
  191. package/esm/Heading/index.js +4 -0
  192. package/esm/HeadingGroup/HeadingGroup.d.ts +8 -0
  193. package/esm/HeadingGroup/HeadingGroup.js +11 -0
  194. package/esm/HeadingGroup/index.d.ts +3 -0
  195. package/esm/HeadingGroup/index.js +3 -0
  196. package/esm/InlineEdit/InlineEdit.d.ts +1 -1
  197. package/esm/InputPicker/InputPicker.js +7 -8
  198. package/esm/Loader/Loader.js +6 -5
  199. package/esm/MultiCascadeTree/MultiCascadeTree.d.ts +9 -0
  200. package/esm/MultiCascadeTree/MultiCascadeTree.js +125 -0
  201. package/esm/MultiCascadeTree/SearchView.d.ts +17 -0
  202. package/esm/MultiCascadeTree/SearchView.js +111 -0
  203. package/esm/MultiCascadeTree/TreeView.d.ts +22 -0
  204. package/esm/{MultiCascader → MultiCascadeTree}/TreeView.js +20 -20
  205. package/esm/MultiCascadeTree/hooks/index.d.ts +5 -0
  206. package/esm/MultiCascadeTree/hooks/index.js +6 -0
  207. package/esm/MultiCascadeTree/hooks/useCascadeValue.d.ts +18 -0
  208. package/esm/MultiCascadeTree/hooks/useCascadeValue.js +197 -0
  209. package/esm/MultiCascadeTree/hooks/useColumnData.d.ts +16 -0
  210. package/esm/MultiCascadeTree/hooks/useColumnData.js +46 -0
  211. package/esm/MultiCascadeTree/hooks/useFlattenData.d.ts +9 -0
  212. package/esm/MultiCascadeTree/hooks/useFlattenData.js +28 -0
  213. package/esm/MultiCascadeTree/hooks/useSearch.d.ts +17 -0
  214. package/esm/MultiCascadeTree/hooks/useSearch.js +47 -0
  215. package/esm/MultiCascadeTree/hooks/useSelect.d.ts +19 -0
  216. package/esm/MultiCascadeTree/hooks/useSelect.js +77 -0
  217. package/esm/MultiCascadeTree/index.d.ts +4 -0
  218. package/esm/MultiCascadeTree/index.js +3 -0
  219. package/esm/MultiCascadeTree/types.d.ts +26 -0
  220. package/esm/MultiCascadeTree/types.js +1 -0
  221. package/esm/MultiCascadeTree/utils.d.ts +37 -0
  222. package/esm/MultiCascadeTree/utils.js +130 -0
  223. package/esm/MultiCascader/MultiCascader.d.ts +57 -29
  224. package/esm/MultiCascader/MultiCascader.js +166 -281
  225. package/esm/Panel/Panel.js +3 -1
  226. package/esm/Popover/Popover.js +3 -1
  227. package/esm/SelectPicker/SelectPicker.js +3 -9
  228. package/esm/Text/Text.d.ts +47 -0
  229. package/esm/Text/Text.js +66 -0
  230. package/esm/Text/index.d.ts +3 -0
  231. package/esm/Text/index.js +4 -0
  232. package/esm/Tree/Tree.d.ts +4 -4
  233. package/esm/TreePicker/TreePicker.js +3 -10
  234. package/esm/index.d.ts +27 -16
  235. package/esm/index.js +38 -15
  236. package/esm/internals/Overlay/OverlayTrigger.js +24 -17
  237. package/esm/internals/Picker/PickerToggle.d.ts +4 -5
  238. package/esm/internals/Picker/PickerToggleTrigger.d.ts +1 -1
  239. package/esm/internals/Picker/PickerToggleTrigger.js +1 -1
  240. package/esm/internals/Picker/hooks/useToggleKeyDownEvent.d.ts +0 -2
  241. package/esm/internals/Picker/hooks/useToggleKeyDownEvent.js +0 -4
  242. package/esm/toaster/ToastContainer.d.ts +9 -2
  243. package/esm/toaster/index.d.ts +0 -1
  244. package/esm/toaster/index.js +0 -1
  245. package/esm/useToaster/index.d.ts +2 -0
  246. package/esm/useToaster/index.js +3 -0
  247. package/esm/{toaster → useToaster}/useToaster.d.ts +4 -4
  248. package/esm/{toaster → useToaster}/useToaster.js +4 -4
  249. package/esm/utils/index.d.ts +1 -0
  250. package/esm/utils/index.js +2 -1
  251. package/internals/Picker/styles/index.less +0 -5
  252. package/internals/Picker/styles/mixin.less +0 -73
  253. package/package.json +1 -1
  254. package/styles/color-modes/light.less +7 -0
  255. package/styles/index.less +5 -0
  256. package/useToaster/package.json +7 -0
  257. package/useToaster/styles/index.css +239 -0
  258. package/useToaster/styles/index.less +1 -0
  259. package/cjs/Cascader/DropdownMenu.d.ts +0 -24
  260. package/cjs/Cascader/DropdownMenu.js +0 -175
  261. package/cjs/Cascader/TreeView.d.ts +0 -24
  262. package/cjs/Cascader/utils.js +0 -79
  263. package/cjs/MultiCascader/TreeView.d.ts +0 -25
  264. package/cjs/MultiCascader/utils.d.ts +0 -71
  265. package/cjs/MultiCascader/utils.js +0 -382
  266. package/esm/Cascader/DropdownMenu.d.ts +0 -24
  267. package/esm/Cascader/DropdownMenu.js +0 -168
  268. package/esm/Cascader/TreeView.d.ts +0 -24
  269. package/esm/Cascader/utils.js +0 -74
  270. package/esm/MultiCascader/TreeView.d.ts +0 -25
  271. package/esm/MultiCascader/utils.d.ts +0 -71
  272. package/esm/MultiCascader/utils.js +0 -369
@@ -0,0 +1,52 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var _slice = _interopRequireDefault(require("lodash/slice"));
9
+ var _treeUtils = require("../../utils/treeUtils");
10
+ /**
11
+ * A hook for column data
12
+ * @param flattenData
13
+ */
14
+ function useColumnData(flattenData) {
15
+ // The columns displayed in the cascading panel.
16
+ var _useState = (0, _react.useState)([flattenData.filter(function (item) {
17
+ return !item.parent;
18
+ })]),
19
+ columnData = _useState[0],
20
+ setColumnData = _useState[1];
21
+ /**
22
+ * Add a list of options to the cascading panel. Used for lazy loading options.
23
+ * @param column
24
+ * @param index The index of the current column.
25
+ */
26
+ function addColumn(column, index) {
27
+ setColumnData([].concat((0, _slice.default)(columnData, 0, index), [column]));
28
+ }
29
+
30
+ /**
31
+ * Remove subsequent columns of the specified column
32
+ * @param index
33
+ */
34
+ function removeColumnByIndex(index) {
35
+ setColumnData([].concat((0, _slice.default)(columnData, 0, index)));
36
+ }
37
+ function enforceUpdateColumnData(nextData) {
38
+ var nextFlattenData = (0, _treeUtils.UNSAFE_flattenTree)(nextData);
39
+ setColumnData([nextFlattenData.filter(function (item) {
40
+ return !item.parent;
41
+ })]);
42
+ }
43
+ return {
44
+ columnData: columnData,
45
+ addColumn: addColumn,
46
+ removeColumnByIndex: removeColumnByIndex,
47
+ setColumnData: setColumnData,
48
+ enforceUpdateColumnData: enforceUpdateColumnData
49
+ };
50
+ }
51
+ var _default = useColumnData;
52
+ exports.default = _default;
@@ -0,0 +1,9 @@
1
+ import { ItemKeys } from '../types';
2
+ /**
3
+ * A hook to flatten tree structure data
4
+ */
5
+ declare function useFlattenData<T>(data: T[], itemKeys: ItemKeys): {
6
+ addFlattenData: (children: T[], parent: T) => void;
7
+ flattenData: T[];
8
+ };
9
+ export default useFlattenData;
@@ -0,0 +1,33 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ exports.__esModule = true;
5
+ exports.default = void 0;
6
+ var _react = require("react");
7
+ var _treeUtils = require("../../utils/treeUtils");
8
+ var _attachParent = require("../../utils/attachParent");
9
+ /**
10
+ * A hook to flatten tree structure data
11
+ */
12
+ function useFlattenData(data, itemKeys) {
13
+ var childrenKey = itemKeys.childrenKey;
14
+ var _useState = (0, _react.useState)((0, _treeUtils.UNSAFE_flattenTree)(data, itemKeys.childrenKey)),
15
+ flattenData = _useState[0],
16
+ setFlattenData = _useState[1];
17
+ var addFlattenData = (0, _react.useCallback)(function (children, parent) {
18
+ var nodes = children.map(function (child) {
19
+ return (0, _attachParent.attachParent)(child, parent);
20
+ });
21
+ parent[childrenKey] = nodes;
22
+ setFlattenData([].concat(flattenData, nodes));
23
+ }, [childrenKey, flattenData]);
24
+ (0, _react.useEffect)(function () {
25
+ setFlattenData((0, _treeUtils.UNSAFE_flattenTree)(data, itemKeys.childrenKey));
26
+ }, [data, itemKeys.childrenKey]);
27
+ return {
28
+ addFlattenData: addFlattenData,
29
+ flattenData: flattenData
30
+ };
31
+ }
32
+ var _default = useFlattenData;
33
+ exports.default = _default;
@@ -0,0 +1,17 @@
1
+ /// <reference types="react" />
2
+ import { ItemDataType } from '../../@types/common';
3
+ interface SearchPanelProps<T> {
4
+ labelKey: string;
5
+ valueKey: string;
6
+ childrenKey: string;
7
+ flattenedData: ItemDataType<T>[];
8
+ uncheckableItemValues?: any[];
9
+ onSearch?: (value: string, event: React.SyntheticEvent) => void;
10
+ }
11
+ declare function useSearch<T>(props: SearchPanelProps<T>): {
12
+ searchKeyword: string;
13
+ setSearchKeyword: import("react").Dispatch<import("react").SetStateAction<string>>;
14
+ items: ItemDataType<T>[];
15
+ handleSearch: (...args: any[]) => any;
16
+ };
17
+ export default useSearch;
@@ -0,0 +1,52 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ exports.__esModule = true;
5
+ exports.default = void 0;
6
+ var _react = require("react");
7
+ var _utils = require("../../utils");
8
+ function useSearch(props) {
9
+ var _useState = (0, _react.useState)(''),
10
+ searchKeyword = _useState[0],
11
+ setSearchKeyword = _useState[1];
12
+ var labelKey = props.labelKey,
13
+ valueKey = props.valueKey,
14
+ flattenedData = props.flattenedData,
15
+ uncheckableItemValues = props.uncheckableItemValues,
16
+ onSearch = props.onSearch;
17
+ var getSearchResult = function getSearchResult() {
18
+ var items = [];
19
+ var result = flattenedData.filter(function (item) {
20
+ if (uncheckableItemValues !== null && uncheckableItemValues !== void 0 && uncheckableItemValues.some(function (value) {
21
+ return item[valueKey] === value;
22
+ })) {
23
+ return false;
24
+ }
25
+ if (item[labelKey].match(new RegExp((0, _utils.getSafeRegExpString)(searchKeyword), 'i'))) {
26
+ return true;
27
+ }
28
+ return false;
29
+ });
30
+ for (var i = 0; i < result.length; i++) {
31
+ items.push(result[i]);
32
+
33
+ // A maximum of 100 search results are returned.
34
+ if (i === 99) {
35
+ return items;
36
+ }
37
+ }
38
+ return items;
39
+ };
40
+ var handleSearch = (0, _utils.useEventCallback)(function (value, event) {
41
+ setSearchKeyword(value);
42
+ onSearch === null || onSearch === void 0 ? void 0 : onSearch(value, event);
43
+ });
44
+ return {
45
+ searchKeyword: searchKeyword,
46
+ setSearchKeyword: setSearchKeyword,
47
+ items: getSearchResult(),
48
+ handleSearch: handleSearch
49
+ };
50
+ }
51
+ var _default = useSearch;
52
+ exports.default = _default;
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import { type ItemDataType } from '../../@types/common';
3
+ export interface UseSelectProps<T> {
4
+ data: ItemDataType<T>[];
5
+ childrenKey: string;
6
+ labelKey: string;
7
+ valueKey: string;
8
+ onSelect?: (node: ItemDataType<T>, cascadePaths: ItemDataType<T>[], event: React.SyntheticEvent) => void;
9
+ getChildren?: (node: ItemDataType<T>) => ItemDataType<T>[] | Promise<ItemDataType<T>[]>;
10
+ }
11
+ declare const useSelect: <T>(props: UseSelectProps<T>) => {
12
+ columnData: (readonly ItemDataType<T>[])[];
13
+ setColumnData: React.Dispatch<React.SetStateAction<(readonly ItemDataType<T>[])[]>>;
14
+ flattenData: ItemDataType<T>[];
15
+ selectedPaths: ItemDataType<T>[] | undefined;
16
+ setSelectedPaths: React.Dispatch<React.SetStateAction<ItemDataType<T>[] | undefined>>;
17
+ handleSelect: (...args: any[]) => any;
18
+ };
19
+ export default useSelect;
@@ -0,0 +1,83 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var _utils = require("../../utils");
9
+ var _useFlattenData2 = _interopRequireDefault(require("./useFlattenData"));
10
+ var _useColumnData2 = _interopRequireDefault(require("./useColumnData"));
11
+ var useSelect = function useSelect(props) {
12
+ var data = props.data,
13
+ childrenKey = props.childrenKey,
14
+ labelKey = props.labelKey,
15
+ valueKey = props.valueKey,
16
+ onSelect = props.onSelect,
17
+ getChildren = props.getChildren;
18
+ var itemKeys = {
19
+ childrenKey: childrenKey,
20
+ labelKey: labelKey,
21
+ valueKey: valueKey
22
+ };
23
+ var _useFlattenData = (0, _useFlattenData2.default)(data, itemKeys),
24
+ flattenData = _useFlattenData.flattenData,
25
+ addFlattenData = _useFlattenData.addFlattenData; // The columns displayed in the cascading panel.
26
+ var _useColumnData = (0, _useColumnData2.default)(flattenData),
27
+ columnData = _useColumnData.columnData,
28
+ addColumn = _useColumnData.addColumn,
29
+ setColumnData = _useColumnData.setColumnData,
30
+ removeColumnByIndex = _useColumnData.removeColumnByIndex,
31
+ enforceUpdateColumnData = _useColumnData.enforceUpdateColumnData;
32
+ (0, _utils.useUpdateEffect)(function () {
33
+ enforceUpdateColumnData(data);
34
+ }, [data]);
35
+ var isMounted = (0, _utils.useIsMounted)();
36
+
37
+ // The path after cascading data selection.
38
+ var _useState = (0, _react.useState)(),
39
+ selectedPaths = _useState[0],
40
+ setSelectedPaths = _useState[1];
41
+ var handleSelect = (0, _utils.useEventCallback)(function (node, cascadePaths, event) {
42
+ var _node$childrenKey, _node$childrenKey2;
43
+ setSelectedPaths(cascadePaths);
44
+ var columnIndex = cascadePaths.length;
45
+
46
+ // Lazy load node's children
47
+ if (typeof getChildren === 'function' && ((_node$childrenKey = node[childrenKey]) === null || _node$childrenKey === void 0 ? void 0 : _node$childrenKey.length) === 0) {
48
+ node.loading = true;
49
+ var children = getChildren(node);
50
+ if (children instanceof Promise) {
51
+ children.then(function (data) {
52
+ node.loading = false;
53
+ node[childrenKey] = data;
54
+ if (isMounted()) {
55
+ addFlattenData(data, node);
56
+ addColumn(data, columnIndex);
57
+ }
58
+ });
59
+ } else {
60
+ node.loading = false;
61
+ node[childrenKey] = children;
62
+ addFlattenData(children, node);
63
+ addColumn(children, columnIndex);
64
+ }
65
+ } else if ((_node$childrenKey2 = node[childrenKey]) !== null && _node$childrenKey2 !== void 0 && _node$childrenKey2.length) {
66
+ addColumn(node[childrenKey], columnIndex);
67
+ } else {
68
+ // Removes subsequent columns of the current column when the clicked node is a leaf node.
69
+ removeColumnByIndex(columnIndex);
70
+ }
71
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
72
+ });
73
+ return {
74
+ columnData: columnData,
75
+ setColumnData: setColumnData,
76
+ flattenData: flattenData,
77
+ selectedPaths: selectedPaths,
78
+ setSelectedPaths: setSelectedPaths,
79
+ handleSelect: handleSelect
80
+ };
81
+ };
82
+ var _default = useSelect;
83
+ exports.default = _default;
@@ -0,0 +1,4 @@
1
+ import MultiCascadeTree from './MultiCascadeTree';
2
+ export type { ItemDataType } from '../@types/common';
3
+ export type { MultiCascadeTreeProps } from './types';
4
+ export default MultiCascadeTree;
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+ var _MultiCascadeTree = _interopRequireDefault(require("./MultiCascadeTree"));
8
+ var _default = _MultiCascadeTree.default;
9
+ exports.default = _default;
@@ -0,0 +1,26 @@
1
+ /// <reference types="react" />
2
+ import type { CascadeTreeProps } from '../CascadeTree/types';
3
+ import type { ItemDataType, ToArray, WithAsProps } from '../@types/common';
4
+ export interface ItemKeys {
5
+ valueKey: string;
6
+ labelKey: string;
7
+ childrenKey: string;
8
+ }
9
+ export interface MultiCascadeTreeProps<T, V = T[]> extends WithAsProps, CascadeTreeProps<T, V> {
10
+ /**
11
+ * When set to true, selecting a child node will update the state of the parent node.
12
+ */
13
+ cascade?: boolean;
14
+ /**
15
+ * Disabled items
16
+ */
17
+ disabledItemValues?: ToArray<NonNullable<T>>;
18
+ /**
19
+ * Set the option value for the check box not to be rendered
20
+ */
21
+ uncheckableItemValues?: T[];
22
+ /**
23
+ * Called after the checkbox state changes.
24
+ */
25
+ onCheck?: (value: T[], node: ItemDataType<T>, checked: boolean, event: React.SyntheticEvent) => void;
26
+ }
@@ -0,0 +1,2 @@
1
+ 'use client';
2
+ "use strict";
@@ -0,0 +1,37 @@
1
+ import { ItemDataType } from '../@types/common';
2
+ export interface ItemType<T = any> extends ItemDataType<T> {
3
+ parent?: ItemType<T>;
4
+ }
5
+ interface ItemKeys {
6
+ valueKey: string;
7
+ labelKey: string;
8
+ childrenKey: string;
9
+ }
10
+ declare type MayHasParent<T extends Record<string, unknown>> = T & {
11
+ parent?: MayHasParent<T>;
12
+ };
13
+ /**
14
+ * Get all parents of a node
15
+ * @param node
16
+ */
17
+ export declare const getParents: <T extends Record<string, unknown>>(node: MayHasParent<T>) => MayHasParent<T>[];
18
+ /**
19
+ * Check if any child nodes are selected.
20
+ * @param node
21
+ * @param value
22
+ * @param itemKeys
23
+ */
24
+ export declare const isSomeChildChecked: <T extends Record<string, unknown>>(node: T, value: T[], itemKeys: Omit<ItemKeys, 'labelKey'>) => any;
25
+ /**
26
+ * Check if the parent is selected.
27
+ * @param node
28
+ * @param value
29
+ * @param itemKeys
30
+ */
31
+ export declare const isSomeParentChecked: <T extends Record<string, unknown>>(node: MayHasParent<T>, value: T[], itemKeys: Pick<ItemKeys, 'valueKey'>) => any;
32
+ export declare const getOtherItemValuesByUnselectChild: <T>(itemNode: ItemType, value: any, itemKeys: Omit<ItemKeys, 'labelKey'>) => T[];
33
+ /**
34
+ * Remove the values of all children.
35
+ */
36
+ export declare const removeAllChildrenValue: <T>(value: T[], item: ItemType, itemKeys: Omit<ItemKeys, 'labelKey'>) => T[] | undefined;
37
+ export {};
@@ -0,0 +1,140 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ exports.__esModule = true;
6
+ exports.removeAllChildrenValue = exports.getOtherItemValuesByUnselectChild = exports.isSomeParentChecked = exports.isSomeChildChecked = exports.getParents = void 0;
7
+ var _remove = _interopRequireDefault(require("lodash/remove"));
8
+ /**
9
+ * Get all parents of a node
10
+ * @param node
11
+ */
12
+ var getParents = function getParents(node) {
13
+ var parents = [];
14
+ if (!node.parent) {
15
+ return parents;
16
+ }
17
+ parents.push(node.parent);
18
+ parents = parents.concat(getParents(node.parent));
19
+ return parents;
20
+ };
21
+
22
+ /**
23
+ * Check if any child nodes are selected.
24
+ * @param node
25
+ * @param value
26
+ * @param itemKeys
27
+ */
28
+ exports.getParents = getParents;
29
+ var isSomeChildChecked = function isSomeChildChecked(node, value, itemKeys) {
30
+ var childrenKey = itemKeys.childrenKey,
31
+ valueKey = itemKeys.valueKey;
32
+ if (!node[childrenKey] || !value) {
33
+ return false;
34
+ }
35
+ return node[childrenKey].some(function (child) {
36
+ var _child$childrenKey;
37
+ if (value.some(function (n) {
38
+ return n === child[valueKey];
39
+ })) {
40
+ return true;
41
+ }
42
+ if ((_child$childrenKey = child[childrenKey]) !== null && _child$childrenKey !== void 0 && _child$childrenKey.length) {
43
+ return isSomeChildChecked(child, value, itemKeys);
44
+ }
45
+ return false;
46
+ });
47
+ };
48
+
49
+ /**
50
+ * Check if the parent is selected.
51
+ * @param node
52
+ * @param value
53
+ * @param itemKeys
54
+ */
55
+ exports.isSomeChildChecked = isSomeChildChecked;
56
+ var isSomeParentChecked = function isSomeParentChecked(node, value, itemKeys) {
57
+ var valueKey = itemKeys.valueKey;
58
+ if (!value) {
59
+ return false;
60
+ }
61
+ if (value.some(function (n) {
62
+ return n === node[valueKey];
63
+ })) {
64
+ return true;
65
+ }
66
+ if (node.parent) {
67
+ return isSomeParentChecked(node.parent, value, itemKeys);
68
+ }
69
+ return false;
70
+ };
71
+ exports.isSomeParentChecked = isSomeParentChecked;
72
+ var getOtherItemValuesByUnselectChild = function getOtherItemValuesByUnselectChild(itemNode, value, itemKeys) {
73
+ var valueKey = itemKeys.valueKey,
74
+ childrenKey = itemKeys.childrenKey;
75
+ var parentValues = [];
76
+ var itemValues = [];
77
+
78
+ // Find the parent node of the current node by value
79
+ function findParent(item) {
80
+ parentValues.push(item[valueKey]);
81
+ if (value.some(function (v) {
82
+ return v === item[valueKey];
83
+ })) {
84
+ return item;
85
+ }
86
+ if (item.parent) {
87
+ var p = findParent(item.parent);
88
+ if (p) {
89
+ return p;
90
+ }
91
+ }
92
+ return null;
93
+ }
94
+
95
+ // Get child nodes through parent node
96
+ function pushChildValue(item) {
97
+ if (!item[childrenKey]) {
98
+ return;
99
+ }
100
+ item[childrenKey].forEach(function (n) {
101
+ // Determine whether it is a direct parent
102
+ if (parentValues.some(function (v) {
103
+ return v === n[valueKey];
104
+ }) && n[childrenKey]) {
105
+ pushChildValue(n);
106
+ } else if (n[valueKey] !== itemNode[valueKey]) {
107
+ itemValues.push(n[valueKey]);
108
+ }
109
+ });
110
+ }
111
+ var parent = findParent(itemNode);
112
+ if (!parent) {
113
+ return [];
114
+ }
115
+ pushChildValue(parent);
116
+ return itemValues;
117
+ };
118
+
119
+ /**
120
+ * Remove the values of all children.
121
+ */
122
+ exports.getOtherItemValuesByUnselectChild = getOtherItemValuesByUnselectChild;
123
+ var removeAllChildrenValue = function removeAllChildrenValue(value, item, itemKeys) {
124
+ var valueKey = itemKeys.valueKey,
125
+ childrenKey = itemKeys.childrenKey;
126
+ var removedValue = [];
127
+ if (!item[childrenKey]) {
128
+ return;
129
+ }
130
+ item[childrenKey].forEach(function (n) {
131
+ removedValue = removedValue.concat((0, _remove.default)(value, function (v) {
132
+ return v === n[valueKey];
133
+ }));
134
+ if (n[childrenKey]) {
135
+ removeAllChildrenValue(value, n, itemKeys);
136
+ }
137
+ });
138
+ return removedValue;
139
+ };
140
+ exports.removeAllChildrenValue = removeAllChildrenValue;
@@ -1,42 +1,70 @@
1
1
  import React from 'react';
2
2
  import { PickerLocale } from '../locales';
3
3
  import { PickerComponent, PickerToggleProps } from '../internals/Picker';
4
- import { FormControlPickerProps, ItemDataType } from '../@types/common';
5
- export declare type ValueType = (number | string)[];
6
- export interface MultiCascaderProps<T = ValueType> extends FormControlPickerProps<T, PickerLocale, ItemDataType>, Pick<PickerToggleProps, 'loading'> {
7
- cascade?: boolean;
8
- /** A picker that can be counted */
4
+ import { FormControlPickerProps, ItemDataType, DataItemValue } from '../@types/common';
5
+ import type { MultiCascadeTreeProps } from '../MultiCascadeTree';
6
+ export interface MultiCascaderProps<T extends DataItemValue> extends FormControlPickerProps<T[], PickerLocale, ItemDataType<T>, T>, MultiCascadeTreeProps<T, T[]>, Pick<PickerToggleProps, 'loading'> {
7
+ /**
8
+ * A picker that can be counted
9
+ */
9
10
  countable?: boolean;
10
- /** Sets the width of the menu */
11
+ /**
12
+ * Sets the width of the menu.
13
+ *
14
+ * @deprecated Use columnWidth instead
15
+ */
11
16
  menuWidth?: number;
12
- /** Sets the height of the menu */
13
- menuHeight?: number | string;
14
- /** Set the option value for the check box not to be rendered */
15
- uncheckableItemValues?: T;
16
- /** Whether dispaly search input box */
17
- searchable?: boolean;
18
- /** The menu is displayed directly when the component is initialized */
17
+ /**
18
+ * Sets the height of the menu
19
+ * @deprecated Use columnHeight instead
20
+ */
21
+ menuHeight?: number;
22
+ /**
23
+ * Custom menu class name
24
+ * @deprecated Use popupClassName instead
25
+ */
26
+ menuClassName?: string;
27
+ /**
28
+ * Custom menu style
29
+ * @deprecated Use popupStyle instead
30
+ */
31
+ menuStyle?: React.CSSProperties;
32
+ /**
33
+ * Custom popup style
34
+ */
35
+ popupStyle?: React.CSSProperties;
36
+ /**
37
+ * Custom popup style
38
+ */
39
+ popupClassName?: string;
40
+ /**
41
+ * The panel is displayed directly when the component is initialized
42
+ * @deprecated Use MultiCascadeTree instead
43
+ * @see MultiCascadeTree https://rsuitejs.com/components/multi-cascade-tree
44
+ */
19
45
  inline?: boolean;
20
- /** Custom render menu */
21
- renderMenu?: (items: readonly ItemDataType[], menu: React.ReactNode, parentNode?: any, layer?: number) => React.ReactNode;
22
- /** Custom render menu items */
23
- renderMenuItem?: (itemLabel: React.ReactNode, item: any) => React.ReactNode;
24
- /** Custom render selected items */
25
- renderValue?: (value: T, selectedItems: ItemDataType[], selectedElement: React.ReactNode) => React.ReactNode;
26
- /** Called when the option is selected */
27
- onSelect?: (node: ItemDataType, cascadePaths: ItemDataType[], event: React.SyntheticEvent) => void;
28
- /** Called after the checkbox state changes */
29
- onCheck?: (value: ValueType, node: ItemDataType, checked: boolean, event: React.SyntheticEvent) => void;
30
- /** Called when clean */
46
+ /**
47
+ * Custom render menu
48
+ * @deprecated Use renderColumn instead
49
+ */
50
+ renderMenu?: (items: readonly ItemDataType<T>[], menu: React.ReactNode, parentNode?: any, layer?: number) => React.ReactNode;
51
+ /**
52
+ * Custom render menu item
53
+ * @deprecated Use renderTreeNode instead
54
+ */
55
+ renderMenuItem?: (node: React.ReactNode, item: ItemDataType<T>) => React.ReactNode;
56
+ /**
57
+ * Custom render selected items
58
+ */
59
+ renderValue?: (value: T[], selectedItems: ItemDataType<T>[], selectedElement: React.ReactNode) => React.ReactNode;
60
+ /**
61
+ * Called when clean
62
+ */
31
63
  onClean?: (event: React.SyntheticEvent) => void;
32
- /** Called when searching */
33
- onSearch?: (searchKeyword: string, event: React.SyntheticEvent) => void;
34
- /** Asynchronously load the children of the tree node. */
35
- getChildren?: (node: ItemDataType) => ItemDataType[] | Promise<ItemDataType[]>;
36
64
  }
37
65
  /**
38
66
  * The `MultiCascader` component is used to select multiple values from cascading options.
39
67
  * @see https://rsuitejs.com/components/multi-cascader/
40
68
  */
41
- declare const MultiCascader: PickerComponent<MultiCascaderProps>;
69
+ declare const MultiCascader: PickerComponent<MultiCascaderProps<DataItemValue>>;
42
70
  export default MultiCascader;