rsuite 5.60.2 → 5.61.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 (438) hide show
  1. package/Accordion/styles/index.css +4 -4
  2. package/AutoComplete/styles/index.css +58 -22
  3. package/Button/styles/index.css +12 -8
  4. package/Button/styles/mixin.less +1 -1
  5. package/CHANGELOG.md +25 -0
  6. package/Calendar/styles/index.css +16 -15
  7. package/CascadeTree/styles/index.css +11 -9
  8. package/CascadeTree/styles/index.less +7 -0
  9. package/CascadeTree/styles/search.less +0 -10
  10. package/Cascader/styles/index.css +60 -31
  11. package/CheckPicker/styles/index.css +59 -27
  12. package/CheckPicker/styles/index.less +3 -3
  13. package/CheckTree/styles/index.css +160 -134
  14. package/CheckTree/styles/index.less +141 -1
  15. package/CheckTreePicker/styles/index.css +170 -126
  16. package/CheckTreePicker/styles/index.less +8 -181
  17. package/Checkbox/styles/index.css +7 -8
  18. package/Checkbox/styles/index.less +1 -5
  19. package/DateInput/styles/index.css +4 -4
  20. package/DatePicker/styles/index.css +62 -26
  21. package/DateRangeInput/styles/index.css +4 -4
  22. package/DateRangePicker/styles/index.css +67 -26
  23. package/DateRangePicker/styles/index.less +2 -0
  24. package/Dropdown/styles/index.css +14 -13
  25. package/Highlight/package.json +7 -0
  26. package/Highlight/styles/index.css +8 -0
  27. package/Highlight/styles/index.less +6 -0
  28. package/IconButton/styles/index.css +11 -10
  29. package/Input/styles/index.css +4 -4
  30. package/InputGroup/styles/index.css +18 -17
  31. package/InputGroup/styles/index.less +1 -1
  32. package/InputNumber/styles/index.css +19 -18
  33. package/InputPicker/styles/index.css +58 -22
  34. package/MultiCascadeTree/styles/index.css +61 -36
  35. package/MultiCascadeTree/styles/index.less +1 -1
  36. package/MultiCascader/styles/index.css +704 -679
  37. package/MultiCascader/styles/index.less +0 -1
  38. package/Nav/styles/index.css +15 -14
  39. package/Navbar/styles/index.css +14 -13
  40. package/Pagination/styles/index.css +62 -26
  41. package/Panel/styles/index.css +4 -4
  42. package/Placeholder/styles/index.css +2 -3
  43. package/Placeholder/styles/index.less +2 -3
  44. package/README.md +21 -39
  45. package/Radio/styles/index.css +7 -7
  46. package/Radio/styles/index.less +1 -5
  47. package/RangeSlider/styles/index.css +1 -1
  48. package/Rate/styles/index.css +1 -1
  49. package/Rate/styles/index.less +1 -1
  50. package/SelectPicker/styles/index.css +58 -22
  51. package/Slider/styles/index.css +1 -1
  52. package/Slider/styles/index.less +1 -1
  53. package/Steps/styles/index.css +6 -1
  54. package/Steps/styles/index.less +2 -1
  55. package/Tabs/styles/index.css +15 -14
  56. package/TagInput/styles/index.css +59 -27
  57. package/TagPicker/styles/index.css +59 -27
  58. package/Toggle/styles/index.css +10 -7
  59. package/Tree/styles/indent-line.less +8 -0
  60. package/Tree/styles/index.css +140 -141
  61. package/Tree/styles/index.less +188 -1
  62. package/Tree/styles/toggle.less +36 -0
  63. package/TreePicker/styles/index.css +142 -134
  64. package/TreePicker/styles/index.less +4 -234
  65. package/Uploader/styles/index.css +12 -11
  66. package/cjs/@types/common.d.ts +41 -4
  67. package/cjs/AutoComplete/AutoComplete.js +2 -1
  68. package/cjs/CascadeTree/CascadeTree.js +8 -7
  69. package/cjs/CascadeTree/SearchView.js +7 -14
  70. package/cjs/CascadeTree/hooks/usePaths.js +4 -4
  71. package/cjs/CascadeTree/hooks/useSearch.js +2 -1
  72. package/cjs/CascadeTree/utils.d.ts +0 -11
  73. package/cjs/CascadeTree/utils.js +0 -23
  74. package/cjs/Cascader/Cascader.js +17 -16
  75. package/cjs/CheckPicker/CheckPicker.js +26 -29
  76. package/cjs/CheckTree/CheckTree.d.ts +16 -0
  77. package/cjs/CheckTree/CheckTree.js +112 -0
  78. package/cjs/CheckTree/CheckTreeNode.d.ts +72 -0
  79. package/cjs/CheckTree/CheckTreeNode.js +117 -0
  80. package/cjs/CheckTree/CheckTreeView.d.ts +70 -0
  81. package/cjs/CheckTree/CheckTreeView.js +310 -0
  82. package/cjs/CheckTree/hooks/useTreeCheckState.d.ts +10 -0
  83. package/cjs/CheckTree/hooks/useTreeCheckState.js +93 -0
  84. package/cjs/CheckTree/hooks/useTreeNodeProps.d.ts +22 -0
  85. package/cjs/CheckTree/hooks/useTreeNodeProps.js +59 -0
  86. package/cjs/CheckTree/hooks/useTreeValue.d.ts +5 -0
  87. package/cjs/CheckTree/hooks/useTreeValue.js +21 -0
  88. package/cjs/CheckTree/index.d.ts +2 -14
  89. package/cjs/CheckTree/index.js +2 -23
  90. package/cjs/CheckTree/utils.d.ts +53 -0
  91. package/cjs/{CheckTreePicker → CheckTree}/utils.js +76 -26
  92. package/cjs/CheckTreePicker/CheckTreePicker.d.ts +30 -12
  93. package/cjs/CheckTreePicker/CheckTreePicker.js +153 -603
  94. package/cjs/CheckTreePicker/hooks/useFocusState.d.ts +16 -0
  95. package/cjs/CheckTreePicker/hooks/useFocusState.js +42 -0
  96. package/cjs/DatePicker/DatePicker.d.ts +4 -0
  97. package/cjs/DatePicker/DatePicker.js +20 -5
  98. package/cjs/DatePicker/types.d.ts +0 -4
  99. package/cjs/DateRangePicker/DateRangePicker.d.ts +51 -23
  100. package/cjs/DateRangePicker/DateRangePicker.js +71 -51
  101. package/cjs/DateRangePicker/hooks/useDateDisabled.d.ts +16 -0
  102. package/cjs/DateRangePicker/hooks/useDateDisabled.js +31 -0
  103. package/cjs/DateRangePicker/types.d.ts +1 -0
  104. package/cjs/Highlight/Highlight.d.ts +14 -0
  105. package/cjs/Highlight/Highlight.js +58 -0
  106. package/cjs/Highlight/index.d.ts +3 -0
  107. package/cjs/Highlight/index.js +9 -0
  108. package/cjs/Highlight/utils/highlightText.d.ts +5 -0
  109. package/cjs/Highlight/utils/highlightText.js +29 -0
  110. package/cjs/InputPicker/InputPicker.js +37 -41
  111. package/cjs/MultiCascadeTree/SearchView.js +6 -14
  112. package/cjs/MultiCascadeTree/hooks/useCascadeValue.js +15 -1
  113. package/cjs/MultiCascadeTree/hooks/useColumnData.js +2 -2
  114. package/cjs/MultiCascadeTree/hooks/useFlattenData.js +3 -3
  115. package/cjs/MultiCascadeTree/hooks/useSearch.js +2 -1
  116. package/cjs/MultiCascadeTree/utils.d.ts +4 -4
  117. package/cjs/MultiCascadeTree/utils.js +20 -11
  118. package/cjs/MultiCascader/MultiCascader.js +12 -12
  119. package/cjs/SelectPicker/SelectPicker.js +2 -6
  120. package/cjs/Tree/IndentLine.d.ts +3 -0
  121. package/cjs/Tree/IndentLine.js +18 -0
  122. package/cjs/Tree/Tree.d.ts +4 -92
  123. package/cjs/Tree/Tree.js +79 -20
  124. package/cjs/Tree/TreeNode.d.ts +101 -0
  125. package/cjs/Tree/TreeNode.js +147 -0
  126. package/cjs/Tree/TreeNodeToggle.d.ts +9 -0
  127. package/cjs/Tree/TreeNodeToggle.js +56 -0
  128. package/cjs/Tree/TreeProvider.d.ts +52 -0
  129. package/cjs/Tree/TreeProvider.js +84 -0
  130. package/cjs/Tree/TreeView.d.ts +68 -0
  131. package/cjs/Tree/TreeView.js +305 -0
  132. package/cjs/Tree/hooks/useExpandTree.d.ts +60 -0
  133. package/cjs/Tree/hooks/useExpandTree.js +77 -0
  134. package/cjs/Tree/hooks/useFlattenTree.d.ts +42 -0
  135. package/cjs/Tree/hooks/useFlattenTree.js +98 -0
  136. package/cjs/Tree/hooks/useFocusTree.d.ts +24 -0
  137. package/cjs/Tree/hooks/useFocusTree.js +158 -0
  138. package/cjs/Tree/hooks/useForceUpdate.d.ts +2 -0
  139. package/cjs/Tree/hooks/useForceUpdate.js +16 -0
  140. package/cjs/Tree/hooks/useTreeDrag.d.ts +32 -0
  141. package/cjs/Tree/hooks/useTreeDrag.js +268 -0
  142. package/cjs/Tree/hooks/useTreeNodeProps.d.ts +29 -0
  143. package/cjs/Tree/hooks/useTreeNodeProps.js +83 -0
  144. package/cjs/Tree/hooks/useTreeNodeRefs.d.ts +6 -0
  145. package/cjs/Tree/hooks/useTreeNodeRefs.js +22 -0
  146. package/cjs/Tree/hooks/useTreeSearch.d.ts +18 -0
  147. package/cjs/Tree/hooks/useTreeSearch.js +74 -0
  148. package/cjs/Tree/hooks/useTreeWithChildren.d.ts +14 -0
  149. package/cjs/Tree/hooks/useTreeWithChildren.js +64 -0
  150. package/cjs/Tree/hooks/useVirtualizedTreeData.d.ts +7 -0
  151. package/cjs/Tree/hooks/useVirtualizedTreeData.js +82 -0
  152. package/cjs/Tree/types.d.ts +257 -0
  153. package/cjs/Tree/types.js +33 -0
  154. package/cjs/Tree/utils/flattenTree.d.ts +25 -0
  155. package/cjs/Tree/utils/flattenTree.js +95 -0
  156. package/cjs/Tree/utils/focusableTree.d.ts +55 -0
  157. package/cjs/Tree/utils/focusableTree.js +157 -0
  158. package/cjs/Tree/utils/formatNodeRefKey.d.ts +4 -0
  159. package/cjs/Tree/utils/formatNodeRefKey.js +11 -0
  160. package/cjs/Tree/utils/getExpandItemValues.d.ts +11 -0
  161. package/cjs/Tree/utils/getExpandItemValues.js +21 -0
  162. package/cjs/Tree/utils/getNodeParentKeys.d.ts +5 -0
  163. package/cjs/Tree/utils/getNodeParentKeys.js +21 -0
  164. package/cjs/Tree/utils/getTreeActiveNode.d.ts +5 -0
  165. package/cjs/Tree/utils/getTreeActiveNode.js +21 -0
  166. package/cjs/Tree/utils/hasVisibleChildren.d.ts +5 -0
  167. package/cjs/Tree/utils/hasVisibleChildren.js +16 -0
  168. package/cjs/Tree/utils/indentTreeNode.d.ts +3 -0
  169. package/cjs/Tree/utils/indentTreeNode.js +18 -0
  170. package/cjs/Tree/utils/index.d.ts +11 -0
  171. package/cjs/Tree/utils/index.js +35 -0
  172. package/cjs/Tree/utils/isExpand.d.ts +6 -0
  173. package/cjs/Tree/utils/isExpand.js +14 -0
  174. package/cjs/Tree/utils/isSearching.d.ts +1 -0
  175. package/cjs/Tree/utils/isSearching.js +10 -0
  176. package/cjs/Tree/utils/treeKeyboardInteractions.d.ts +21 -0
  177. package/cjs/Tree/utils/treeKeyboardInteractions.js +49 -0
  178. package/cjs/TreePicker/TreePicker.d.ts +27 -21
  179. package/cjs/TreePicker/TreePicker.js +155 -575
  180. package/cjs/TreePicker/hooks/useFocusState.d.ts +20 -0
  181. package/cjs/TreePicker/hooks/useFocusState.js +53 -0
  182. package/cjs/index.d.ts +2 -0
  183. package/cjs/index.js +3 -1
  184. package/cjs/internals/Picker/Listbox.d.ts +40 -10
  185. package/cjs/internals/Picker/Listbox.js +21 -16
  186. package/cjs/internals/Picker/PickerIndicator.d.ts +2 -1
  187. package/cjs/internals/Picker/PickerIndicator.js +7 -3
  188. package/cjs/internals/Picker/hooks/useFocusItemValue.js +4 -4
  189. package/cjs/internals/Picker/hooks/usePickerRef.d.ts +1 -4
  190. package/cjs/internals/Picker/hooks/usePickerRef.js +3 -20
  191. package/cjs/internals/Picker/index.d.ts +0 -1
  192. package/cjs/internals/Picker/index.js +1 -4
  193. package/cjs/internals/Picker/utils.js +12 -12
  194. package/cjs/internals/{Picker → Tree}/TreeView.js +1 -1
  195. package/cjs/internals/Tree/index.d.ts +1 -0
  196. package/cjs/internals/Tree/index.js +8 -0
  197. package/cjs/internals/Tree/utils/filterNodesOfTree.d.ts +5 -0
  198. package/cjs/internals/Tree/utils/filterNodesOfTree.js +31 -0
  199. package/cjs/internals/Tree/utils/findNodeOfTree.d.ts +1 -0
  200. package/cjs/internals/Tree/utils/findNodeOfTree.js +26 -0
  201. package/cjs/internals/Tree/utils/getParentMap.d.ts +15 -0
  202. package/cjs/internals/Tree/utils/getParentMap.js +52 -0
  203. package/cjs/internals/Tree/utils/getPathTowardsItem.d.ts +4 -0
  204. package/cjs/internals/Tree/utils/getPathTowardsItem.js +16 -0
  205. package/cjs/internals/Tree/utils/index.d.ts +4 -0
  206. package/cjs/internals/Tree/utils/index.js +14 -0
  207. package/cjs/internals/Windowing/List.d.ts +1 -0
  208. package/cjs/internals/Windowing/List.js +5 -1
  209. package/cjs/internals/Windowing/index.d.ts +1 -1
  210. package/cjs/internals/Windowing/index.js +4 -2
  211. package/cjs/internals/hooks/index.d.ts +1 -0
  212. package/cjs/internals/hooks/index.js +8 -0
  213. package/cjs/internals/hooks/useFoucsVirtualListItem.d.ts +7 -0
  214. package/cjs/internals/hooks/useFoucsVirtualListItem.js +26 -0
  215. package/cjs/{utils → internals/utils}/getSafeRegExpString.d.ts +1 -1
  216. package/cjs/{utils → internals/utils}/getSafeRegExpString.js +1 -1
  217. package/cjs/internals/utils/index.d.ts +2 -0
  218. package/cjs/internals/utils/index.js +9 -0
  219. package/cjs/internals/utils/stringifyReactNode.d.ts +2 -0
  220. package/cjs/internals/utils/stringifyReactNode.js +17 -0
  221. package/cjs/utils/constants.d.ts +0 -2
  222. package/cjs/utils/constants.js +1 -6
  223. package/cjs/utils/getDataGroupBy.js +3 -3
  224. package/cjs/utils/index.d.ts +0 -3
  225. package/cjs/utils/index.js +1 -10
  226. package/cjs/utils/useIsomorphicLayoutEffect.d.ts +2 -2
  227. package/dist/rsuite-no-reset-rtl.css +292 -300
  228. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  229. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  230. package/dist/rsuite-no-reset.css +294 -304
  231. package/dist/rsuite-no-reset.min.css +1 -1
  232. package/dist/rsuite-no-reset.min.css.map +1 -1
  233. package/dist/rsuite-rtl.css +293 -301
  234. package/dist/rsuite-rtl.min.css +1 -1
  235. package/dist/rsuite-rtl.min.css.map +1 -1
  236. package/dist/rsuite.css +295 -305
  237. package/dist/rsuite.js +611 -116
  238. package/dist/rsuite.js.map +1 -1
  239. package/dist/rsuite.min.css +1 -1
  240. package/dist/rsuite.min.css.map +1 -1
  241. package/dist/rsuite.min.js +1 -1
  242. package/dist/rsuite.min.js.map +1 -1
  243. package/esm/@types/common.d.ts +41 -4
  244. package/esm/AutoComplete/AutoComplete.js +2 -1
  245. package/esm/CascadeTree/CascadeTree.js +2 -1
  246. package/esm/CascadeTree/SearchView.js +6 -13
  247. package/esm/CascadeTree/hooks/usePaths.js +1 -1
  248. package/esm/CascadeTree/hooks/useSearch.js +2 -1
  249. package/esm/CascadeTree/utils.d.ts +0 -11
  250. package/esm/CascadeTree/utils.js +0 -22
  251. package/esm/Cascader/Cascader.js +2 -1
  252. package/esm/CheckPicker/CheckPicker.js +4 -7
  253. package/esm/CheckTree/CheckTree.d.ts +16 -0
  254. package/esm/CheckTree/CheckTree.js +105 -0
  255. package/esm/CheckTree/CheckTreeNode.d.ts +72 -0
  256. package/esm/CheckTree/CheckTreeNode.js +110 -0
  257. package/esm/CheckTree/CheckTreeView.d.ts +70 -0
  258. package/esm/CheckTree/CheckTreeView.js +304 -0
  259. package/esm/CheckTree/hooks/useTreeCheckState.d.ts +10 -0
  260. package/esm/CheckTree/hooks/useTreeCheckState.js +87 -0
  261. package/esm/CheckTree/hooks/useTreeNodeProps.d.ts +22 -0
  262. package/esm/CheckTree/hooks/useTreeNodeProps.js +52 -0
  263. package/esm/CheckTree/hooks/useTreeValue.d.ts +5 -0
  264. package/esm/CheckTree/hooks/useTreeValue.js +16 -0
  265. package/esm/CheckTree/index.d.ts +2 -14
  266. package/esm/CheckTree/index.js +1 -21
  267. package/esm/CheckTree/utils.d.ts +53 -0
  268. package/esm/{CheckTreePicker → CheckTree}/utils.js +72 -22
  269. package/esm/CheckTreePicker/CheckTreePicker.d.ts +30 -12
  270. package/esm/CheckTreePicker/CheckTreePicker.js +156 -607
  271. package/esm/CheckTreePicker/hooks/useFocusState.d.ts +16 -0
  272. package/esm/CheckTreePicker/hooks/useFocusState.js +37 -0
  273. package/esm/DatePicker/DatePicker.d.ts +4 -0
  274. package/esm/DatePicker/DatePicker.js +20 -5
  275. package/esm/DatePicker/types.d.ts +0 -4
  276. package/esm/DateRangePicker/DateRangePicker.d.ts +51 -23
  277. package/esm/DateRangePicker/DateRangePicker.js +71 -51
  278. package/esm/DateRangePicker/hooks/useDateDisabled.d.ts +16 -0
  279. package/esm/DateRangePicker/hooks/useDateDisabled.js +26 -0
  280. package/esm/DateRangePicker/types.d.ts +1 -0
  281. package/esm/Highlight/Highlight.d.ts +14 -0
  282. package/esm/Highlight/Highlight.js +52 -0
  283. package/esm/Highlight/index.d.ts +3 -0
  284. package/esm/Highlight/index.js +3 -0
  285. package/esm/Highlight/utils/highlightText.d.ts +5 -0
  286. package/esm/Highlight/utils/highlightText.js +25 -0
  287. package/esm/InputPicker/InputPicker.js +3 -7
  288. package/esm/MultiCascadeTree/SearchView.js +6 -14
  289. package/esm/MultiCascadeTree/hooks/useCascadeValue.js +15 -1
  290. package/esm/MultiCascadeTree/hooks/useColumnData.js +1 -1
  291. package/esm/MultiCascadeTree/hooks/useFlattenData.js +1 -1
  292. package/esm/MultiCascadeTree/hooks/useSearch.js +2 -1
  293. package/esm/MultiCascadeTree/utils.d.ts +4 -4
  294. package/esm/MultiCascadeTree/utils.js +18 -9
  295. package/esm/MultiCascader/MultiCascader.js +1 -1
  296. package/esm/SelectPicker/SelectPicker.js +2 -6
  297. package/esm/Tree/IndentLine.d.ts +3 -0
  298. package/esm/Tree/IndentLine.js +12 -0
  299. package/esm/Tree/Tree.d.ts +4 -92
  300. package/esm/Tree/Tree.js +78 -18
  301. package/esm/Tree/TreeNode.d.ts +101 -0
  302. package/esm/Tree/TreeNode.js +141 -0
  303. package/esm/Tree/TreeNodeToggle.d.ts +9 -0
  304. package/esm/Tree/TreeNodeToggle.js +50 -0
  305. package/esm/Tree/TreeProvider.d.ts +52 -0
  306. package/esm/Tree/TreeProvider.js +74 -0
  307. package/esm/Tree/TreeView.d.ts +68 -0
  308. package/esm/Tree/TreeView.js +299 -0
  309. package/esm/Tree/hooks/useExpandTree.d.ts +60 -0
  310. package/esm/Tree/hooks/useExpandTree.js +70 -0
  311. package/esm/Tree/hooks/useFlattenTree.d.ts +42 -0
  312. package/esm/Tree/hooks/useFlattenTree.js +92 -0
  313. package/esm/Tree/hooks/useFocusTree.d.ts +24 -0
  314. package/esm/Tree/hooks/useFocusTree.js +153 -0
  315. package/esm/Tree/hooks/useForceUpdate.d.ts +2 -0
  316. package/esm/Tree/hooks/useForceUpdate.js +11 -0
  317. package/esm/Tree/hooks/useTreeDrag.d.ts +32 -0
  318. package/esm/Tree/hooks/useTreeDrag.js +264 -0
  319. package/esm/Tree/hooks/useTreeNodeProps.d.ts +29 -0
  320. package/esm/Tree/hooks/useTreeNodeProps.js +76 -0
  321. package/esm/Tree/hooks/useTreeNodeRefs.d.ts +6 -0
  322. package/esm/Tree/hooks/useTreeNodeRefs.js +18 -0
  323. package/esm/Tree/hooks/useTreeSearch.d.ts +18 -0
  324. package/esm/Tree/hooks/useTreeSearch.js +69 -0
  325. package/esm/Tree/hooks/useTreeWithChildren.d.ts +14 -0
  326. package/esm/Tree/hooks/useTreeWithChildren.js +59 -0
  327. package/esm/Tree/hooks/useVirtualizedTreeData.d.ts +7 -0
  328. package/esm/Tree/hooks/useVirtualizedTreeData.js +77 -0
  329. package/esm/Tree/types.d.ts +257 -0
  330. package/esm/Tree/types.js +30 -0
  331. package/esm/Tree/utils/flattenTree.d.ts +25 -0
  332. package/esm/Tree/utils/flattenTree.js +88 -0
  333. package/esm/Tree/utils/focusableTree.d.ts +55 -0
  334. package/esm/Tree/utils/focusableTree.js +146 -0
  335. package/esm/Tree/utils/formatNodeRefKey.d.ts +4 -0
  336. package/esm/Tree/utils/formatNodeRefKey.js +7 -0
  337. package/esm/Tree/utils/getExpandItemValues.d.ts +11 -0
  338. package/esm/Tree/utils/getExpandItemValues.js +17 -0
  339. package/esm/Tree/utils/getNodeParentKeys.d.ts +5 -0
  340. package/esm/Tree/utils/getNodeParentKeys.js +17 -0
  341. package/esm/Tree/utils/getTreeActiveNode.d.ts +5 -0
  342. package/esm/Tree/utils/getTreeActiveNode.js +16 -0
  343. package/esm/Tree/utils/hasVisibleChildren.d.ts +5 -0
  344. package/esm/Tree/utils/hasVisibleChildren.js +12 -0
  345. package/esm/Tree/utils/indentTreeNode.d.ts +3 -0
  346. package/esm/Tree/utils/indentTreeNode.js +14 -0
  347. package/esm/Tree/utils/index.d.ts +11 -0
  348. package/esm/Tree/utils/index.js +14 -0
  349. package/esm/Tree/utils/isExpand.d.ts +6 -0
  350. package/esm/Tree/utils/isExpand.js +11 -0
  351. package/esm/Tree/utils/isSearching.d.ts +1 -0
  352. package/esm/Tree/utils/isSearching.js +5 -0
  353. package/esm/Tree/utils/treeKeyboardInteractions.d.ts +21 -0
  354. package/esm/Tree/utils/treeKeyboardInteractions.js +43 -0
  355. package/esm/TreePicker/TreePicker.d.ts +27 -21
  356. package/esm/TreePicker/TreePicker.js +158 -579
  357. package/esm/TreePicker/hooks/useFocusState.d.ts +20 -0
  358. package/esm/TreePicker/hooks/useFocusState.js +48 -0
  359. package/esm/index.d.ts +2 -0
  360. package/esm/index.js +1 -0
  361. package/esm/internals/Picker/Listbox.d.ts +40 -10
  362. package/esm/internals/Picker/Listbox.js +22 -16
  363. package/esm/internals/Picker/PickerIndicator.d.ts +2 -1
  364. package/esm/internals/Picker/PickerIndicator.js +7 -3
  365. package/esm/internals/Picker/hooks/useFocusItemValue.js +1 -1
  366. package/esm/internals/Picker/hooks/usePickerRef.d.ts +1 -4
  367. package/esm/internals/Picker/hooks/usePickerRef.js +3 -20
  368. package/esm/internals/Picker/index.d.ts +0 -1
  369. package/esm/internals/Picker/index.js +0 -1
  370. package/esm/internals/Picker/utils.js +1 -1
  371. package/esm/internals/{Picker → Tree}/TreeView.js +1 -1
  372. package/esm/internals/Tree/index.d.ts +1 -0
  373. package/esm/internals/Tree/index.js +2 -0
  374. package/esm/internals/Tree/utils/filterNodesOfTree.d.ts +5 -0
  375. package/esm/internals/Tree/utils/filterNodesOfTree.js +26 -0
  376. package/esm/internals/Tree/utils/findNodeOfTree.d.ts +1 -0
  377. package/esm/internals/Tree/utils/findNodeOfTree.js +22 -0
  378. package/esm/internals/Tree/utils/getParentMap.d.ts +15 -0
  379. package/esm/internals/Tree/utils/getParentMap.js +47 -0
  380. package/esm/internals/Tree/utils/getPathTowardsItem.d.ts +4 -0
  381. package/esm/internals/Tree/utils/getPathTowardsItem.js +12 -0
  382. package/esm/internals/Tree/utils/index.d.ts +4 -0
  383. package/esm/internals/Tree/utils/index.js +5 -0
  384. package/esm/internals/Windowing/List.d.ts +1 -0
  385. package/esm/internals/Windowing/List.js +3 -0
  386. package/esm/internals/Windowing/index.d.ts +1 -1
  387. package/esm/internals/Windowing/index.js +1 -1
  388. package/esm/internals/hooks/index.d.ts +1 -0
  389. package/esm/internals/hooks/index.js +2 -0
  390. package/esm/internals/hooks/useFoucsVirtualListItem.d.ts +7 -0
  391. package/esm/internals/hooks/useFoucsVirtualListItem.js +22 -0
  392. package/esm/{utils → internals/utils}/getSafeRegExpString.d.ts +1 -1
  393. package/esm/{utils → internals/utils}/getSafeRegExpString.js +1 -1
  394. package/esm/internals/utils/index.d.ts +2 -0
  395. package/esm/internals/utils/index.js +3 -0
  396. package/esm/internals/utils/stringifyReactNode.d.ts +2 -0
  397. package/esm/internals/utils/stringifyReactNode.js +12 -0
  398. package/esm/utils/constants.d.ts +0 -2
  399. package/esm/utils/constants.js +0 -3
  400. package/esm/utils/getDataGroupBy.js +1 -1
  401. package/esm/utils/index.d.ts +0 -3
  402. package/esm/utils/index.js +0 -3
  403. package/esm/utils/useIsomorphicLayoutEffect.d.ts +2 -2
  404. package/internals/Picker/styles/index.less +27 -1
  405. package/package.json +1 -1
  406. package/styles/color-modes/dark.less +5 -1
  407. package/styles/color-modes/high-contrast.less +8 -2
  408. package/styles/color-modes/light.less +10 -5
  409. package/styles/index.less +1 -0
  410. package/TreePicker/styles/mixin.less +0 -7
  411. package/cjs/CheckTreePicker/CheckTreeNode.d.ts +0 -28
  412. package/cjs/CheckTreePicker/CheckTreeNode.js +0 -140
  413. package/cjs/CheckTreePicker/utils.d.ts +0 -44
  414. package/cjs/Tree/TreeContext.d.ts +0 -6
  415. package/cjs/Tree/TreeContext.js +0 -10
  416. package/cjs/TreePicker/TreeNode.d.ts +0 -36
  417. package/cjs/TreePicker/TreeNode.js +0 -174
  418. package/cjs/utils/appendTooltip.d.ts +0 -10
  419. package/cjs/utils/appendTooltip.js +0 -20
  420. package/cjs/utils/stringToObject.d.ts +0 -2
  421. package/cjs/utils/stringToObject.js +0 -19
  422. package/cjs/utils/treeUtils.d.ts +0 -304
  423. package/cjs/utils/treeUtils.js +0 -1095
  424. package/esm/CheckTreePicker/CheckTreeNode.d.ts +0 -28
  425. package/esm/CheckTreePicker/CheckTreeNode.js +0 -133
  426. package/esm/CheckTreePicker/utils.d.ts +0 -44
  427. package/esm/Tree/TreeContext.d.ts +0 -6
  428. package/esm/Tree/TreeContext.js +0 -4
  429. package/esm/TreePicker/TreeNode.d.ts +0 -36
  430. package/esm/TreePicker/TreeNode.js +0 -167
  431. package/esm/utils/appendTooltip.d.ts +0 -10
  432. package/esm/utils/appendTooltip.js +0 -15
  433. package/esm/utils/stringToObject.d.ts +0 -2
  434. package/esm/utils/stringToObject.js +0 -14
  435. package/esm/utils/treeUtils.d.ts +0 -304
  436. package/esm/utils/treeUtils.js +0 -1043
  437. /package/cjs/internals/{Picker → Tree}/TreeView.d.ts +0 -0
  438. /package/esm/internals/{Picker → Tree}/TreeView.d.ts +0 -0
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare function highlightText(text: string, props: {
3
+ query?: string | string[];
4
+ renderMark: (patch: string, index: number) => React.ReactNode;
5
+ }): string | React.ReactNode[];
@@ -0,0 +1,25 @@
1
+ 'use client';
2
+ import { getSafeRegExpString } from '../../internals/utils';
3
+ export function highlightText(text, props) {
4
+ var query = props.query,
5
+ renderMark = props.renderMark;
6
+ if (!query || !text) {
7
+ return text;
8
+ }
9
+ var queries = Array.isArray(query) ? query : [query];
10
+ var regx = new RegExp(queries.map(function (q) {
11
+ return getSafeRegExpString(q);
12
+ }).join('|'), 'ig');
13
+ var texts = [];
14
+ var strArr = text.split(regx);
15
+ var highStrArr = text.match(regx);
16
+ for (var i = 0; i < strArr.length; i++) {
17
+ if (strArr[i]) {
18
+ texts.push(strArr[i]);
19
+ }
20
+ if (highStrArr !== null && highStrArr !== void 0 && highStrArr[i]) {
21
+ texts.push(renderMark(highStrArr[i], i));
22
+ }
23
+ }
24
+ return texts;
25
+ }
@@ -5,7 +5,6 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
5
5
  var _templateObject, _templateObject2, _templateObject3, _templateObject4;
6
6
  import React, { useEffect } from 'react';
7
7
  import PropTypes from 'prop-types';
8
- import isUndefined from 'lodash/isUndefined';
9
8
  import isNil from 'lodash/isNil';
10
9
  import isFunction from 'lodash/isFunction';
11
10
  import remove from 'lodash/remove';
@@ -14,7 +13,7 @@ import isArray from 'lodash/isArray';
14
13
  import omit from 'lodash/omit';
15
14
  import pick from 'lodash/pick';
16
15
  import shallowEqual from '../utils/shallowEqual';
17
- import { filterNodesOfTree } from '../utils/treeUtils';
16
+ import { filterNodesOfTree } from '../internals/Tree/utils';
18
17
  import Plaintext from '../internals/Plaintext';
19
18
  import { createChainedFunction, tplTransform, useClassNames, useCustom, useControlled, useEventCallback, mergeRefs, isOneOf, KEY_VALUES } from '../utils';
20
19
  import { oneOf } from '../internals/propTypes';
@@ -553,11 +552,8 @@ var InputPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
553
552
  activeItemValues: multi ? value : [value],
554
553
  focusItemValue: focusItemValue,
555
554
  maxHeight: menuMaxHeight,
556
- data: items
557
- // FIXME-Doma
558
- // `group` is redundant so long as `groupBy` exists
559
- ,
560
- group: !isUndefined(groupBy),
555
+ data: items,
556
+ query: searchKeyword,
561
557
  groupBy: groupBy,
562
558
  onSelect: multi ? handleCheckTag : handleSelectItem,
563
559
  renderMenuGroup: renderMenuGroup,
@@ -3,11 +3,10 @@ import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
4
  import React from 'react';
5
5
  import { useClassNames, useCustom } from '../utils';
6
- import { getNodeParents } from '../utils/treeUtils';
7
6
  import SearchBox from '../internals/SearchBox';
8
7
  import Checkbox from '../Checkbox';
9
- import { isSomeChildChecked } from './utils';
10
- import { highlightLabel } from '../CascadeTree/utils';
8
+ import Highlight from '../Highlight';
9
+ import { isSomeChildChecked, getNodeParents } from './utils';
11
10
  function SearchView(props) {
12
11
  var _props$as = props.as,
13
12
  Component = _props$as === void 0 ? 'div' : _props$as,
@@ -37,17 +36,10 @@ function SearchView(props) {
37
36
  var renderSearchRow = function renderSearchRow(item, key) {
38
37
  var _extends2;
39
38
  var nodes = getNodeParents(item);
40
- var label = highlightLabel({
41
- item: item,
42
- labelKey: labelKey,
43
- searchKeyword: searchKeyword,
44
- render: function render(patch, index) {
45
- return /*#__PURE__*/React.createElement("span", {
46
- key: index,
47
- className: prefix('match')
48
- }, patch);
49
- }
50
- });
39
+ var label = /*#__PURE__*/React.createElement(Highlight, {
40
+ as: "span",
41
+ query: searchKeyword
42
+ }, item[labelKey]);
51
43
  nodes.push(_extends({}, item, (_extends2 = {}, _extends2[labelKey] = label, _extends2)));
52
44
  var active = value.some(function (value) {
53
45
  if (cascade) {
@@ -3,7 +3,21 @@ import { useState, useEffect, useCallback } from 'react';
3
3
  import uniq from 'lodash/uniq';
4
4
  import remove from 'lodash/remove';
5
5
  import { useEventCallback } from '../../utils';
6
- import { getParents, removeAllChildrenValue, getOtherItemValuesByUnselectChild } from '../utils';
6
+ import { removeAllChildrenValue, getOtherItemValuesByUnselectChild } from '../utils';
7
+
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
+ };
7
21
 
8
22
  /**
9
23
  * A hook that converts the value into a cascading value
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { useState } from 'react';
3
3
  import slice from 'lodash/slice';
4
- import { UNSAFE_flattenTree } from '../../utils/treeUtils';
4
+ import { UNSAFE_flattenTree } from '../../Tree/utils';
5
5
  /**
6
6
  * A hook for column data
7
7
  * @param flattenData
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { useState, useCallback, useEffect } from 'react';
3
- import { UNSAFE_flattenTree } from '../../utils/treeUtils';
3
+ import { UNSAFE_flattenTree } from '../../Tree/utils';
4
4
  import { attachParent } from '../../utils/attachParent';
5
5
  /**
6
6
  * A hook to flatten tree structure data
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
  import { useState } from 'react';
3
- import { getSafeRegExpString, useEventCallback } from '../../utils';
3
+ import { useEventCallback } from '../../utils';
4
+ import { getSafeRegExpString } from '../../internals/utils';
4
5
  function useSearch(props) {
5
6
  var _useState = useState(''),
6
7
  searchKeyword = _useState[0],
@@ -7,14 +7,14 @@ interface ItemKeys {
7
7
  labelKey: string;
8
8
  childrenKey: string;
9
9
  }
10
- declare type MayHasParent<T extends Record<string, unknown>> = T & {
10
+ export declare type MayHasParent<T extends Record<string, unknown>> = T & {
11
11
  parent?: MayHasParent<T>;
12
12
  };
13
13
  /**
14
- * Get all parents of a node
15
- * @param node
14
+ * get all ancestor nodes of given node
15
+ * @param {*} node
16
16
  */
17
- export declare const getParents: <T extends Record<string, unknown>>(node: MayHasParent<T>) => MayHasParent<T>[];
17
+ export declare function getNodeParents(node: any, parentKey?: string, valueKey?: string): any[];
18
18
  /**
19
19
  * Check if any child nodes are selected.
20
20
  * @param node
@@ -1,18 +1,27 @@
1
1
  'use client';
2
2
  import remove from 'lodash/remove';
3
3
  /**
4
- * Get all parents of a node
5
- * @param node
4
+ * get all ancestor nodes of given node
5
+ * @param {*} node
6
6
  */
7
- export var getParents = function getParents(node) {
8
- var parents = [];
9
- if (!node.parent) {
10
- return parents;
7
+ export function getNodeParents(node, parentKey, valueKey) {
8
+ if (parentKey === void 0) {
9
+ parentKey = 'parent';
11
10
  }
12
- parents.push(node.parent);
13
- parents = parents.concat(getParents(node.parent));
11
+ var parents = [];
12
+ var traverse = function traverse(node) {
13
+ if (node !== null && node !== void 0 && node[parentKey]) {
14
+ traverse(node[parentKey]);
15
+ if (valueKey) {
16
+ parents.push(node[parentKey][valueKey]);
17
+ } else {
18
+ parents.push(node[parentKey]);
19
+ }
20
+ }
21
+ };
22
+ traverse(node);
14
23
  return parents;
15
- };
24
+ }
16
25
 
17
26
  /**
18
27
  * Check if any child nodes are selected.
@@ -7,7 +7,7 @@ import pick from 'lodash/pick';
7
7
  import omit from 'lodash/omit';
8
8
  import isFunction from 'lodash/isFunction';
9
9
  import isNil from 'lodash/isNil';
10
- import { findNodeOfTree } from '../utils/treeUtils';
10
+ import { findNodeOfTree } from '../internals/Tree/utils';
11
11
  import { getColumnsAndPaths } from '../CascadeTree/utils';
12
12
  import { createChainedFunction, mergeRefs, useClassNames, useCustom, useControlled, useEventCallback } from '../utils';
13
13
  import { PickerToggle, PickerPopup, SelectedElement, PickerToggleTrigger, usePickerClassName, usePickerRef, useToggleKeyDownEvent, useFocusItemValue, pickTriggerPropKeys, omitTriggerPropKeys, listPickerPropTypes } from '../internals/Picker';
@@ -6,7 +6,6 @@ var _templateObject;
6
6
  import React, { useState } from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import pick from 'lodash/pick';
9
- import isUndefined from 'lodash/isUndefined';
10
9
  import isNil from 'lodash/isNil';
11
10
  import isFunction from 'lodash/isFunction';
12
11
  import omit from 'lodash/omit';
@@ -230,11 +229,8 @@ var SelectPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
230
229
  listItemAs: ListItem,
231
230
  activeItemValues: [value],
232
231
  focusItemValue: focusItemValue,
233
- data: items
234
- // FIXME-Doma
235
- // `group` is redundant so long as `groupBy` exists
236
- ,
237
- group: !isUndefined(groupBy),
232
+ data: items,
233
+ query: searchKeyword,
238
234
  groupBy: groupBy,
239
235
  onSelect: handleItemSelect,
240
236
  onGroupTitleClick: onGroupTitleClick,
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ declare const IndentLine: () => JSX.Element;
3
+ export default IndentLine;
@@ -0,0 +1,12 @@
1
+ 'use client';
2
+ import React from 'react';
3
+ import { useClassNames } from '../utils';
4
+ var IndentLine = function IndentLine() {
5
+ var _useClassNames = useClassNames('tree'),
6
+ prefix = _useClassNames.prefix;
7
+ return /*#__PURE__*/React.createElement("span", {
8
+ className: prefix('indent-line'),
9
+ "data-testid": "indent-line"
10
+ });
11
+ };
12
+ export default IndentLine;
@@ -1,95 +1,7 @@
1
- import React from 'react';
2
- import { StandardProps, ItemDataType, RsRefForwardingComponent } from '../@types/common';
3
- import { ListProps } from '../internals/Windowing';
4
- /**
5
- * Tree Node Drag Type
6
- */
7
- export declare enum TREE_NODE_DROP_POSITION {
8
- DRAG_OVER = 0,
9
- DRAG_OVER_TOP = 1,
10
- DRAG_OVER_BOTTOM = 2
11
- }
12
- export interface DropData<ItemDataType> {
13
- /** drag node data */
14
- dragNode: ItemDataType;
15
- /** dropNode data */
16
- dropNode: ItemDataType;
17
- /** node drop position */
18
- dropNodePosition: TREE_NODE_DROP_POSITION;
19
- /** Update Data when drop node */
20
- createUpdateDataFunction: (data: ItemDataType[]) => ItemDataType[];
21
- }
22
- export interface TreeDragProps<ItemDataType = Record<string, any>> {
23
- /** Whether the node can be dragged */
24
- draggable?: boolean;
25
- /** Called when scrolling */
26
- onScroll?: (event: React.SyntheticEvent) => void;
27
- /** Called when node drag start */
28
- onDragStart?: (nodeData: ItemDataType, e: React.DragEvent) => void;
29
- /** Called when node drag enter */
30
- onDragEnter?: (nodeData: ItemDataType, e: React.DragEvent) => void;
31
- /** Called when node drag over */
32
- onDragOver?: (nodeData: ItemDataType, e: React.DragEvent) => void;
33
- /** Called when node drag leave */
34
- onDragLeave?: (nodeData: ItemDataType, e: React.DragEvent) => void;
35
- /** Called when node drag end */
36
- onDragEnd?: (nodeData: ItemDataType, e: React.DragEvent) => void;
37
- /** Called when node drop */
38
- onDrop?: (dropData: DropData<ItemDataType>, e: React.DragEvent) => void;
39
- }
40
- export interface TreeBaseProps<ValueType = string | number, ItemDataType = Record<string, any>> extends StandardProps {
41
- /** The height of Dropdown */
42
- height?: number;
43
- /** Whether display search input box */
44
- searchable?: boolean;
45
- /** Display an auxiliary line when the tree node is indented. */
46
- showIndentLine?: boolean;
47
- /** Whether using virtualized list */
48
- virtualized?: boolean;
49
- /** Virtualized List props */
50
- listProps?: Partial<ListProps>;
51
- /** Expand all nodes By default */
52
- defaultExpandAll?: boolean;
53
- /** searchKeyword (Controlled) */
54
- searchKeyword?: string;
55
- /** Set the option value for the expand node */
56
- defaultExpandItemValues?: any[];
57
- /** Set the option value for the expand node with controlled*/
58
- expandItemValues?: any[];
59
- /** Callback function for data change */
60
- onExpand?: (expandItemValues: ItemDataType[], activeNode: ItemDataType, concat: (data: ItemDataType[], children: ItemDataType[]) => ItemDataType[]) => void;
61
- /** Callback function after selecting tree node */
62
- onSelect?: (activeNode: ItemDataType, value: ValueType, event: React.SyntheticEvent) => void;
63
- /** Callback when a tree item is clicked */
64
- onSelectItem?: (item: ItemDataType, path: ItemDataType[]) => void;
65
- /** Custom Render tree Node */
66
- renderTreeNode?: (nodeData: ItemDataType) => React.ReactNode;
67
- /** Custom Render icon */
68
- renderTreeIcon?: (nodeData: ItemDataType) => React.ReactNode;
69
- /** callback fired when search */
70
- onSearch?: (searchKeyword: string, event: React.KeyboardEvent<HTMLInputElement>) => void;
71
- /** Called when clean */
72
- onClean?: (event: React.SyntheticEvent) => void;
73
- /** Custom search rules. */
74
- searchBy?: (keyword: string, label: React.ReactNode, item: any) => boolean;
75
- /** Customizing the Rendering Menu list */
76
- renderMenu?: (menu: React.ReactNode) => React.ReactNode;
77
- /** load node children data asynchronously */
78
- getChildren?: (activeNode: ItemDataType) => ItemDataType[] | Promise<ItemDataType>;
79
- }
80
- export interface TreeProps<T = string | number> extends TreeBaseProps<T, ItemDataType<T>>, TreeDragProps<ItemDataType<T>> {
81
- /** Tree Data */
82
- data: ItemDataType<T>[];
83
- /** Selected value */
84
- value?: T;
85
- /** Whether using virtualized list */
86
- virtualized?: boolean;
87
- /** Tree data structure Label property name */
88
- labelKey?: string;
89
- /** Tree data Structure Value property name */
90
- valueKey?: string;
91
- /** Tree data structure Children property name */
92
- childrenKey?: string;
1
+ import { RsRefForwardingComponent } from '../@types/common';
2
+ import { type TreeViewProps } from './TreeView';
3
+ import type { TreeExtraProps } from './types';
4
+ export interface TreeProps<T = string | number | null> extends TreeViewProps<T>, TreeExtraProps {
93
5
  /** Default selected Value */
94
6
  defaultValue?: T;
95
7
  }
package/esm/Tree/Tree.js CHANGED
@@ -1,33 +1,93 @@
1
1
  'use client';
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
4
  import React, { useMemo } from 'react';
4
- import TreePicker from '../TreePicker';
5
- import TreeContext from './TreeContext';
6
- /**
7
- * Tree Node Drag Type
8
- */
9
- export var TREE_NODE_DROP_POSITION;
10
- (function (TREE_NODE_DROP_POSITION) {
11
- TREE_NODE_DROP_POSITION[TREE_NODE_DROP_POSITION["DRAG_OVER"] = 0] = "DRAG_OVER";
12
- TREE_NODE_DROP_POSITION[TREE_NODE_DROP_POSITION["DRAG_OVER_TOP"] = 1] = "DRAG_OVER_TOP";
13
- TREE_NODE_DROP_POSITION[TREE_NODE_DROP_POSITION["DRAG_OVER_BOTTOM"] = 2] = "DRAG_OVER_BOTTOM";
14
- })(TREE_NODE_DROP_POSITION || (TREE_NODE_DROP_POSITION = {}));
5
+ import TreeView from './TreeView';
6
+ import { useControlled, useEventCallback } from '../utils';
7
+ import useFlattenTree from './hooks/useFlattenTree';
8
+ import useTreeWithChildren from './hooks/useTreeWithChildren';
9
+ import useExpandTree from './hooks/useExpandTree';
10
+ import { TreeProvider } from './TreeProvider';
15
11
  /**
16
12
  * The `Tree` component is used to display hierarchical data.
17
13
  *
18
14
  * @see https://rsuitejs.com/components/tree
19
15
  */
20
16
  var Tree = /*#__PURE__*/React.forwardRef(function (props, ref) {
21
- var contextValue = useMemo(function () {
17
+ var controlledValue = props.value,
18
+ defaultValue = props.defaultValue,
19
+ _props$childrenKey = props.childrenKey,
20
+ childrenKey = _props$childrenKey === void 0 ? 'children' : _props$childrenKey,
21
+ _props$labelKey = props.labelKey,
22
+ labelKey = _props$labelKey === void 0 ? 'label' : _props$labelKey,
23
+ _props$valueKey = props.valueKey,
24
+ valueKey = _props$valueKey === void 0 ? 'value' : _props$valueKey,
25
+ data = props.data,
26
+ _props$defaultExpandA = props.defaultExpandAll,
27
+ defaultExpandAll = _props$defaultExpandA === void 0 ? false : _props$defaultExpandA,
28
+ _props$defaultExpandI = props.defaultExpandItemValues,
29
+ defaultExpandItemValues = _props$defaultExpandI === void 0 ? [] : _props$defaultExpandI,
30
+ controlledExpandItemValues = props.expandItemValues,
31
+ virtualized = props.virtualized,
32
+ renderTreeIcon = props.renderTreeIcon,
33
+ renderTreeNode = props.renderTreeNode,
34
+ getChildren = props.getChildren,
35
+ onChange = props.onChange,
36
+ onExpand = props.onExpand,
37
+ rest = _objectWithoutPropertiesLoose(props, ["value", "defaultValue", "childrenKey", "labelKey", "valueKey", "data", "defaultExpandAll", "defaultExpandItemValues", "expandItemValues", "virtualized", "renderTreeIcon", "renderTreeNode", "getChildren", "onChange", "onExpand"]);
38
+ var _useControlled = useControlled(controlledValue, defaultValue),
39
+ value = _useControlled[0],
40
+ setValue = _useControlled[1];
41
+ var itemDataKeys = {
42
+ childrenKey: childrenKey,
43
+ labelKey: labelKey,
44
+ valueKey: valueKey
45
+ };
46
+ var _useTreeWithChildren = useTreeWithChildren(data, itemDataKeys),
47
+ treeData = _useTreeWithChildren.treeData,
48
+ loadingNodeValues = _useTreeWithChildren.loadingNodeValues,
49
+ appendChild = _useTreeWithChildren.appendChild;
50
+ var flattenedNodes = useFlattenTree(treeData, _extends({}, itemDataKeys));
51
+ var _useExpandTree = useExpandTree(data, _extends({}, itemDataKeys, {
52
+ defaultExpandAll: defaultExpandAll,
53
+ defaultExpandItemValues: defaultExpandItemValues,
54
+ controlledExpandItemValues: controlledExpandItemValues,
55
+ onExpand: onExpand,
56
+ getChildren: getChildren,
57
+ appendChild: appendChild
58
+ })),
59
+ expandItemValues = _useExpandTree.expandItemValues,
60
+ handleExpandTreeNode = _useExpandTree.handleExpandTreeNode;
61
+ var handleChange = useEventCallback(function (nextValue, event) {
62
+ setValue(nextValue);
63
+ onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
64
+ });
65
+ var treeContext = useMemo(function () {
22
66
  return {
23
- inline: true
67
+ props: {
68
+ childrenKey: childrenKey,
69
+ labelKey: labelKey,
70
+ valueKey: valueKey,
71
+ virtualized: virtualized,
72
+ renderTreeIcon: renderTreeIcon,
73
+ renderTreeNode: renderTreeNode
74
+ }
24
75
  };
25
- }, []);
26
- return /*#__PURE__*/React.createElement(TreeContext.Provider, {
27
- value: contextValue
28
- }, /*#__PURE__*/React.createElement(TreePicker, _extends({
76
+ }, [childrenKey, labelKey, valueKey, virtualized, renderTreeIcon, renderTreeNode]);
77
+ return /*#__PURE__*/React.createElement(TreeProvider, {
78
+ value: treeContext
79
+ }, /*#__PURE__*/React.createElement(TreeView, _extends({
29
80
  ref: ref
30
- }, props)));
81
+ }, rest, {
82
+ value: value,
83
+ data: treeData,
84
+ virtualized: virtualized,
85
+ loadingNodeValues: loadingNodeValues,
86
+ flattenedNodes: flattenedNodes,
87
+ expandItemValues: expandItemValues,
88
+ onChange: handleChange,
89
+ onExpand: handleExpandTreeNode
90
+ })));
31
91
  });
32
92
  Tree.displayName = 'Tree';
33
93
  export default Tree;
@@ -0,0 +1,101 @@
1
+ import React from 'react';
2
+ import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
3
+ import type { TreeNode as TreeNodeData } from './types';
4
+ export declare type DragStatus = 'drag-over' | 'drag-over-top' | 'drag-over-bottom';
5
+ interface TreeDragEventProps {
6
+ /**
7
+ * Callback function called when the drag operation starts.
8
+ */
9
+ onDragStart?: (nodeData: TreeNodeData, event: React.DragEvent<any>) => void;
10
+ /**
11
+ * Callback function called when a dragged item enters the node.
12
+ */
13
+ onDragEnter?: (nodeData: TreeNodeData, event: React.DragEvent<any>) => void;
14
+ /**
15
+ * Callback function called when a dragged item is over the node.
16
+ */
17
+ onDragOver?: (nodeData: TreeNodeData, event: React.DragEvent<any>) => void;
18
+ /**
19
+ * Callback function called when a dragged item leaves the node.
20
+ */
21
+ onDragLeave?: (nodeData: TreeNodeData, event: React.DragEvent<any>) => void;
22
+ /**
23
+ * Callback function called when the drag operation ends.
24
+ */
25
+ onDragEnd?: (nodeData: TreeNodeData, event: React.DragEvent<any>) => void;
26
+ /**
27
+ * Callback function called when a dragged item is dropped on the node.
28
+ */
29
+ onDrop?: (nodeData: TreeNodeData, event: React.DragEvent<any>) => void;
30
+ }
31
+ /**
32
+ * Props for the TreeNode component.
33
+ */
34
+ export interface TreeNodeProps extends WithAsProps, TreeDragEventProps {
35
+ /**
36
+ * The layer of the node in the tree hierarchy.
37
+ */
38
+ layer: number;
39
+ /**
40
+ * The value of the node.
41
+ */
42
+ value?: TreeNodeData['value'];
43
+ /**
44
+ * The label of the node.
45
+ */
46
+ label?: TreeNodeData['label'];
47
+ /**
48
+ * Whether the node should be focused.
49
+ */
50
+ focus?: boolean;
51
+ /**
52
+ * Whether the node is in a loading state.
53
+ */
54
+ loading?: boolean;
55
+ /**
56
+ * Whether the node is expanded.
57
+ */
58
+ expanded?: boolean;
59
+ /**
60
+ * Whether the node is active.
61
+ */
62
+ active?: boolean;
63
+ /**
64
+ * Whether the node is visible.
65
+ */
66
+ visible: boolean;
67
+ /**
68
+ * The data associated with the node.
69
+ */
70
+ nodeData: any;
71
+ /**
72
+ * Whether the node is disabled.
73
+ */
74
+ disabled?: boolean;
75
+ /**
76
+ * Whether the node is draggable.
77
+ */
78
+ draggable?: boolean;
79
+ /**
80
+ * Whether the node is being dragged.
81
+ */
82
+ dragging?: boolean;
83
+ /**
84
+ * Drag status of the node.
85
+ */
86
+ dragStatus?: DragStatus;
87
+ /**
88
+ * Whether the node has children.
89
+ */
90
+ hasChildren?: boolean;
91
+ /**
92
+ * Callback function called when the node is expanded.
93
+ */
94
+ onExpand?: (nodeData: TreeNodeData, expanded?: boolean) => void;
95
+ /**
96
+ * Callback function called when the node is selected.
97
+ */
98
+ onSelect?: (nodeData: TreeNodeData, event: React.SyntheticEvent) => void;
99
+ }
100
+ declare const TreeNode: RsRefForwardingComponent<'div', TreeNodeProps>;
101
+ export default TreeNode;