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,77 @@
1
+ 'use client';
2
+ import { useState } from 'react';
3
+ import { useEventCallback, useUpdateEffect, useIsMounted } from '../../utils';
4
+ import useFlattenData from './useFlattenData';
5
+ import useColumnData from './useColumnData';
6
+ var useSelect = function useSelect(props) {
7
+ var data = props.data,
8
+ childrenKey = props.childrenKey,
9
+ labelKey = props.labelKey,
10
+ valueKey = props.valueKey,
11
+ onSelect = props.onSelect,
12
+ getChildren = props.getChildren;
13
+ var itemKeys = {
14
+ childrenKey: childrenKey,
15
+ labelKey: labelKey,
16
+ valueKey: valueKey
17
+ };
18
+ var _useFlattenData = useFlattenData(data, itemKeys),
19
+ flattenData = _useFlattenData.flattenData,
20
+ addFlattenData = _useFlattenData.addFlattenData; // The columns displayed in the cascading panel.
21
+ var _useColumnData = useColumnData(flattenData),
22
+ columnData = _useColumnData.columnData,
23
+ addColumn = _useColumnData.addColumn,
24
+ setColumnData = _useColumnData.setColumnData,
25
+ removeColumnByIndex = _useColumnData.removeColumnByIndex,
26
+ enforceUpdateColumnData = _useColumnData.enforceUpdateColumnData;
27
+ useUpdateEffect(function () {
28
+ enforceUpdateColumnData(data);
29
+ }, [data]);
30
+ var isMounted = useIsMounted();
31
+
32
+ // The path after cascading data selection.
33
+ var _useState = useState(),
34
+ selectedPaths = _useState[0],
35
+ setSelectedPaths = _useState[1];
36
+ var handleSelect = useEventCallback(function (node, cascadePaths, event) {
37
+ var _node$childrenKey, _node$childrenKey2;
38
+ setSelectedPaths(cascadePaths);
39
+ var columnIndex = cascadePaths.length;
40
+
41
+ // Lazy load node's children
42
+ if (typeof getChildren === 'function' && ((_node$childrenKey = node[childrenKey]) === null || _node$childrenKey === void 0 ? void 0 : _node$childrenKey.length) === 0) {
43
+ node.loading = true;
44
+ var children = getChildren(node);
45
+ if (children instanceof Promise) {
46
+ children.then(function (data) {
47
+ node.loading = false;
48
+ node[childrenKey] = data;
49
+ if (isMounted()) {
50
+ addFlattenData(data, node);
51
+ addColumn(data, columnIndex);
52
+ }
53
+ });
54
+ } else {
55
+ node.loading = false;
56
+ node[childrenKey] = children;
57
+ addFlattenData(children, node);
58
+ addColumn(children, columnIndex);
59
+ }
60
+ } else if ((_node$childrenKey2 = node[childrenKey]) !== null && _node$childrenKey2 !== void 0 && _node$childrenKey2.length) {
61
+ addColumn(node[childrenKey], columnIndex);
62
+ } else {
63
+ // Removes subsequent columns of the current column when the clicked node is a leaf node.
64
+ removeColumnByIndex(columnIndex);
65
+ }
66
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
67
+ });
68
+ return {
69
+ columnData: columnData,
70
+ setColumnData: setColumnData,
71
+ flattenData: flattenData,
72
+ selectedPaths: selectedPaths,
73
+ setSelectedPaths: setSelectedPaths,
74
+ handleSelect: handleSelect
75
+ };
76
+ };
77
+ export default useSelect;
@@ -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,3 @@
1
+ 'use client';
2
+ import MultiCascadeTree from './MultiCascadeTree';
3
+ export default MultiCascadeTree;
@@ -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 @@
1
+ 'use client';
@@ -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,130 @@
1
+ 'use client';
2
+ import remove from 'lodash/remove';
3
+ /**
4
+ * Get all parents of a node
5
+ * @param node
6
+ */
7
+ export var getParents = function getParents(node) {
8
+ var parents = [];
9
+ if (!node.parent) {
10
+ return parents;
11
+ }
12
+ parents.push(node.parent);
13
+ parents = parents.concat(getParents(node.parent));
14
+ return parents;
15
+ };
16
+
17
+ /**
18
+ * Check if any child nodes are selected.
19
+ * @param node
20
+ * @param value
21
+ * @param itemKeys
22
+ */
23
+ export var isSomeChildChecked = function isSomeChildChecked(node, value, itemKeys) {
24
+ var childrenKey = itemKeys.childrenKey,
25
+ valueKey = itemKeys.valueKey;
26
+ if (!node[childrenKey] || !value) {
27
+ return false;
28
+ }
29
+ return node[childrenKey].some(function (child) {
30
+ var _child$childrenKey;
31
+ if (value.some(function (n) {
32
+ return n === child[valueKey];
33
+ })) {
34
+ return true;
35
+ }
36
+ if ((_child$childrenKey = child[childrenKey]) !== null && _child$childrenKey !== void 0 && _child$childrenKey.length) {
37
+ return isSomeChildChecked(child, value, itemKeys);
38
+ }
39
+ return false;
40
+ });
41
+ };
42
+
43
+ /**
44
+ * Check if the parent is selected.
45
+ * @param node
46
+ * @param value
47
+ * @param itemKeys
48
+ */
49
+ export var isSomeParentChecked = function isSomeParentChecked(node, value, itemKeys) {
50
+ var valueKey = itemKeys.valueKey;
51
+ if (!value) {
52
+ return false;
53
+ }
54
+ if (value.some(function (n) {
55
+ return n === node[valueKey];
56
+ })) {
57
+ return true;
58
+ }
59
+ if (node.parent) {
60
+ return isSomeParentChecked(node.parent, value, itemKeys);
61
+ }
62
+ return false;
63
+ };
64
+ export var getOtherItemValuesByUnselectChild = function getOtherItemValuesByUnselectChild(itemNode, value, itemKeys) {
65
+ var valueKey = itemKeys.valueKey,
66
+ childrenKey = itemKeys.childrenKey;
67
+ var parentValues = [];
68
+ var itemValues = [];
69
+
70
+ // Find the parent node of the current node by value
71
+ function findParent(item) {
72
+ parentValues.push(item[valueKey]);
73
+ if (value.some(function (v) {
74
+ return v === item[valueKey];
75
+ })) {
76
+ return item;
77
+ }
78
+ if (item.parent) {
79
+ var p = findParent(item.parent);
80
+ if (p) {
81
+ return p;
82
+ }
83
+ }
84
+ return null;
85
+ }
86
+
87
+ // Get child nodes through parent node
88
+ function pushChildValue(item) {
89
+ if (!item[childrenKey]) {
90
+ return;
91
+ }
92
+ item[childrenKey].forEach(function (n) {
93
+ // Determine whether it is a direct parent
94
+ if (parentValues.some(function (v) {
95
+ return v === n[valueKey];
96
+ }) && n[childrenKey]) {
97
+ pushChildValue(n);
98
+ } else if (n[valueKey] !== itemNode[valueKey]) {
99
+ itemValues.push(n[valueKey]);
100
+ }
101
+ });
102
+ }
103
+ var parent = findParent(itemNode);
104
+ if (!parent) {
105
+ return [];
106
+ }
107
+ pushChildValue(parent);
108
+ return itemValues;
109
+ };
110
+
111
+ /**
112
+ * Remove the values of all children.
113
+ */
114
+ export var removeAllChildrenValue = function removeAllChildrenValue(value, item, itemKeys) {
115
+ var valueKey = itemKeys.valueKey,
116
+ childrenKey = itemKeys.childrenKey;
117
+ var removedValue = [];
118
+ if (!item[childrenKey]) {
119
+ return;
120
+ }
121
+ item[childrenKey].forEach(function (n) {
122
+ removedValue = removedValue.concat(remove(value, function (v) {
123
+ return v === n[valueKey];
124
+ }));
125
+ if (n[childrenKey]) {
126
+ removeAllChildrenValue(value, n, itemKeys);
127
+ }
128
+ });
129
+ return removedValue;
130
+ };
@@ -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;