rsuite 5.60.1 → 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 (475) 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 +37 -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 +63 -26
  21. package/DatePicker/styles/index.less +1 -0
  22. package/DateRangeInput/styles/index.css +4 -4
  23. package/DateRangePicker/styles/index.css +69 -26
  24. package/DateRangePicker/styles/index.less +3 -0
  25. package/Dropdown/styles/index.css +14 -13
  26. package/Highlight/package.json +7 -0
  27. package/Highlight/styles/index.css +8 -0
  28. package/Highlight/styles/index.less +6 -0
  29. package/IconButton/styles/index.css +11 -10
  30. package/Input/styles/index.css +4 -4
  31. package/InputGroup/styles/index.css +18 -17
  32. package/InputGroup/styles/index.less +1 -1
  33. package/InputNumber/styles/index.css +19 -18
  34. package/InputPicker/styles/index.css +58 -22
  35. package/LICENSE +1 -1
  36. package/MultiCascadeTree/styles/index.css +61 -36
  37. package/MultiCascadeTree/styles/index.less +1 -1
  38. package/MultiCascader/styles/index.css +704 -679
  39. package/MultiCascader/styles/index.less +0 -1
  40. package/Nav/styles/index.css +15 -14
  41. package/Navbar/styles/index.css +14 -13
  42. package/Pagination/styles/index.css +62 -26
  43. package/Panel/styles/index.css +4 -4
  44. package/Placeholder/styles/index.css +2 -3
  45. package/Placeholder/styles/index.less +2 -3
  46. package/README.md +53 -90
  47. package/Radio/styles/index.css +7 -7
  48. package/Radio/styles/index.less +1 -5
  49. package/RangeSlider/styles/index.css +2 -2
  50. package/Rate/styles/index.css +1 -1
  51. package/Rate/styles/index.less +1 -1
  52. package/SelectPicker/styles/index.css +58 -22
  53. package/Slider/styles/index.css +2 -2
  54. package/Slider/styles/index.less +2 -2
  55. package/Steps/styles/index.css +6 -1
  56. package/Steps/styles/index.less +2 -1
  57. package/Tabs/styles/index.css +15 -14
  58. package/TagInput/styles/index.css +59 -27
  59. package/TagPicker/styles/index.css +59 -27
  60. package/Toggle/styles/index.css +16 -8
  61. package/Toggle/styles/index.less +2 -1
  62. package/Tree/styles/indent-line.less +8 -0
  63. package/Tree/styles/index.css +140 -141
  64. package/Tree/styles/index.less +188 -1
  65. package/Tree/styles/toggle.less +36 -0
  66. package/TreePicker/styles/index.css +142 -134
  67. package/TreePicker/styles/index.less +4 -234
  68. package/Uploader/styles/index.css +12 -11
  69. package/cjs/@types/common.d.ts +41 -4
  70. package/cjs/AutoComplete/AutoComplete.js +2 -1
  71. package/cjs/CascadeTree/CascadeTree.js +8 -7
  72. package/cjs/CascadeTree/SearchView.js +7 -14
  73. package/cjs/CascadeTree/hooks/usePaths.js +4 -4
  74. package/cjs/CascadeTree/hooks/useSearch.js +2 -1
  75. package/cjs/CascadeTree/utils.d.ts +0 -11
  76. package/cjs/CascadeTree/utils.js +0 -23
  77. package/cjs/Cascader/Cascader.js +17 -16
  78. package/cjs/CheckPicker/CheckPicker.js +26 -29
  79. package/cjs/CheckTree/CheckTree.d.ts +16 -0
  80. package/cjs/CheckTree/CheckTree.js +112 -0
  81. package/cjs/CheckTree/CheckTreeNode.d.ts +72 -0
  82. package/cjs/CheckTree/CheckTreeNode.js +117 -0
  83. package/cjs/CheckTree/CheckTreeView.d.ts +70 -0
  84. package/cjs/CheckTree/CheckTreeView.js +310 -0
  85. package/cjs/CheckTree/hooks/useTreeCheckState.d.ts +10 -0
  86. package/cjs/CheckTree/hooks/useTreeCheckState.js +93 -0
  87. package/cjs/CheckTree/hooks/useTreeNodeProps.d.ts +22 -0
  88. package/cjs/CheckTree/hooks/useTreeNodeProps.js +59 -0
  89. package/cjs/CheckTree/hooks/useTreeValue.d.ts +5 -0
  90. package/cjs/CheckTree/hooks/useTreeValue.js +21 -0
  91. package/cjs/CheckTree/index.d.ts +2 -14
  92. package/cjs/CheckTree/index.js +2 -23
  93. package/cjs/CheckTree/utils.d.ts +53 -0
  94. package/cjs/{CheckTreePicker → CheckTree}/utils.js +76 -26
  95. package/cjs/CheckTreePicker/CheckTreePicker.d.ts +30 -12
  96. package/cjs/CheckTreePicker/CheckTreePicker.js +153 -603
  97. package/cjs/CheckTreePicker/hooks/useFocusState.d.ts +16 -0
  98. package/cjs/CheckTreePicker/hooks/useFocusState.js +42 -0
  99. package/cjs/DateInput/DateField.js +3 -1
  100. package/cjs/DateInput/DateInput.js +17 -16
  101. package/{esm/DateInput → cjs/DateInput/hooks}/useDateInputState.d.ts +1 -1
  102. package/cjs/DateInput/{useDateInputState.js → hooks/useDateInputState.js} +2 -2
  103. package/cjs/DateInput/hooks/useFieldCursor.d.ts +6 -0
  104. package/cjs/DateInput/hooks/useFieldCursor.js +56 -0
  105. package/cjs/DateInput/hooks/useSelectedState.d.ts +14 -0
  106. package/cjs/DateInput/hooks/useSelectedState.js +23 -0
  107. package/cjs/DateInput/index.d.ts +5 -3
  108. package/cjs/DateInput/index.js +11 -5
  109. package/cjs/DateInput/utils.d.ts +0 -1
  110. package/cjs/DateInput/utils.js +2 -24
  111. package/cjs/DatePicker/DatePicker.d.ts +4 -0
  112. package/cjs/DatePicker/DatePicker.js +20 -5
  113. package/cjs/DatePicker/types.d.ts +0 -4
  114. package/cjs/DateRangeInput/DateRangeInput.js +16 -17
  115. package/cjs/DateRangePicker/DateRangePicker.d.ts +51 -23
  116. package/cjs/DateRangePicker/DateRangePicker.js +71 -51
  117. package/cjs/DateRangePicker/hooks/useDateDisabled.d.ts +16 -0
  118. package/cjs/DateRangePicker/hooks/useDateDisabled.js +31 -0
  119. package/cjs/DateRangePicker/types.d.ts +1 -0
  120. package/cjs/Highlight/Highlight.d.ts +14 -0
  121. package/cjs/Highlight/Highlight.js +58 -0
  122. package/cjs/Highlight/index.d.ts +3 -0
  123. package/cjs/Highlight/index.js +9 -0
  124. package/cjs/Highlight/utils/highlightText.d.ts +5 -0
  125. package/cjs/Highlight/utils/highlightText.js +29 -0
  126. package/cjs/InputPicker/InputPicker.js +37 -41
  127. package/cjs/MultiCascadeTree/SearchView.js +6 -14
  128. package/cjs/MultiCascadeTree/hooks/useCascadeValue.js +15 -1
  129. package/cjs/MultiCascadeTree/hooks/useColumnData.js +2 -2
  130. package/cjs/MultiCascadeTree/hooks/useFlattenData.js +3 -3
  131. package/cjs/MultiCascadeTree/hooks/useSearch.js +2 -1
  132. package/cjs/MultiCascadeTree/utils.d.ts +4 -4
  133. package/cjs/MultiCascadeTree/utils.js +20 -11
  134. package/cjs/MultiCascader/MultiCascader.js +12 -12
  135. package/cjs/SelectPicker/SelectPicker.js +2 -6
  136. package/cjs/Tree/IndentLine.d.ts +3 -0
  137. package/cjs/Tree/IndentLine.js +18 -0
  138. package/cjs/Tree/Tree.d.ts +4 -92
  139. package/cjs/Tree/Tree.js +79 -20
  140. package/cjs/Tree/TreeNode.d.ts +101 -0
  141. package/cjs/Tree/TreeNode.js +147 -0
  142. package/cjs/Tree/TreeNodeToggle.d.ts +9 -0
  143. package/cjs/Tree/TreeNodeToggle.js +56 -0
  144. package/cjs/Tree/TreeProvider.d.ts +52 -0
  145. package/cjs/Tree/TreeProvider.js +84 -0
  146. package/cjs/Tree/TreeView.d.ts +68 -0
  147. package/cjs/Tree/TreeView.js +305 -0
  148. package/cjs/Tree/hooks/useExpandTree.d.ts +60 -0
  149. package/cjs/Tree/hooks/useExpandTree.js +77 -0
  150. package/cjs/Tree/hooks/useFlattenTree.d.ts +42 -0
  151. package/cjs/Tree/hooks/useFlattenTree.js +98 -0
  152. package/cjs/Tree/hooks/useFocusTree.d.ts +24 -0
  153. package/cjs/Tree/hooks/useFocusTree.js +158 -0
  154. package/cjs/Tree/hooks/useForceUpdate.d.ts +2 -0
  155. package/cjs/Tree/hooks/useForceUpdate.js +16 -0
  156. package/cjs/Tree/hooks/useTreeDrag.d.ts +32 -0
  157. package/cjs/Tree/hooks/useTreeDrag.js +268 -0
  158. package/cjs/Tree/hooks/useTreeNodeProps.d.ts +29 -0
  159. package/cjs/Tree/hooks/useTreeNodeProps.js +83 -0
  160. package/cjs/Tree/hooks/useTreeNodeRefs.d.ts +6 -0
  161. package/cjs/Tree/hooks/useTreeNodeRefs.js +22 -0
  162. package/cjs/Tree/hooks/useTreeSearch.d.ts +18 -0
  163. package/cjs/Tree/hooks/useTreeSearch.js +74 -0
  164. package/cjs/Tree/hooks/useTreeWithChildren.d.ts +14 -0
  165. package/cjs/Tree/hooks/useTreeWithChildren.js +64 -0
  166. package/cjs/Tree/hooks/useVirtualizedTreeData.d.ts +7 -0
  167. package/cjs/Tree/hooks/useVirtualizedTreeData.js +82 -0
  168. package/cjs/Tree/types.d.ts +257 -0
  169. package/cjs/Tree/types.js +33 -0
  170. package/cjs/Tree/utils/flattenTree.d.ts +25 -0
  171. package/cjs/Tree/utils/flattenTree.js +95 -0
  172. package/cjs/Tree/utils/focusableTree.d.ts +55 -0
  173. package/cjs/Tree/utils/focusableTree.js +157 -0
  174. package/cjs/Tree/utils/formatNodeRefKey.d.ts +4 -0
  175. package/cjs/Tree/utils/formatNodeRefKey.js +11 -0
  176. package/cjs/Tree/utils/getExpandItemValues.d.ts +11 -0
  177. package/cjs/Tree/utils/getExpandItemValues.js +21 -0
  178. package/cjs/Tree/utils/getNodeParentKeys.d.ts +5 -0
  179. package/cjs/Tree/utils/getNodeParentKeys.js +21 -0
  180. package/cjs/Tree/utils/getTreeActiveNode.d.ts +5 -0
  181. package/cjs/Tree/utils/getTreeActiveNode.js +21 -0
  182. package/cjs/Tree/utils/hasVisibleChildren.d.ts +5 -0
  183. package/cjs/Tree/utils/hasVisibleChildren.js +16 -0
  184. package/cjs/Tree/utils/indentTreeNode.d.ts +3 -0
  185. package/cjs/Tree/utils/indentTreeNode.js +18 -0
  186. package/cjs/Tree/utils/index.d.ts +11 -0
  187. package/cjs/Tree/utils/index.js +35 -0
  188. package/cjs/Tree/utils/isExpand.d.ts +6 -0
  189. package/cjs/Tree/utils/isExpand.js +14 -0
  190. package/cjs/Tree/utils/isSearching.d.ts +1 -0
  191. package/cjs/Tree/utils/isSearching.js +10 -0
  192. package/cjs/Tree/utils/treeKeyboardInteractions.d.ts +21 -0
  193. package/cjs/Tree/utils/treeKeyboardInteractions.js +49 -0
  194. package/cjs/TreePicker/TreePicker.d.ts +27 -21
  195. package/cjs/TreePicker/TreePicker.js +155 -575
  196. package/cjs/TreePicker/hooks/useFocusState.d.ts +20 -0
  197. package/cjs/TreePicker/hooks/useFocusState.js +53 -0
  198. package/cjs/index.d.ts +2 -0
  199. package/cjs/index.js +3 -1
  200. package/cjs/internals/Picker/Listbox.d.ts +40 -10
  201. package/cjs/internals/Picker/Listbox.js +21 -16
  202. package/cjs/internals/Picker/PickerIndicator.d.ts +2 -1
  203. package/cjs/internals/Picker/PickerIndicator.js +7 -3
  204. package/cjs/internals/Picker/hooks/useFocusItemValue.js +4 -4
  205. package/cjs/internals/Picker/hooks/usePickerRef.d.ts +1 -4
  206. package/cjs/internals/Picker/hooks/usePickerRef.js +3 -20
  207. package/cjs/internals/Picker/index.d.ts +0 -1
  208. package/cjs/internals/Picker/index.js +1 -4
  209. package/cjs/internals/Picker/utils.js +12 -12
  210. package/cjs/internals/{Picker → Tree}/TreeView.js +1 -1
  211. package/cjs/internals/Tree/index.d.ts +1 -0
  212. package/cjs/internals/Tree/index.js +8 -0
  213. package/cjs/internals/Tree/utils/filterNodesOfTree.d.ts +5 -0
  214. package/cjs/internals/Tree/utils/filterNodesOfTree.js +31 -0
  215. package/cjs/internals/Tree/utils/findNodeOfTree.d.ts +1 -0
  216. package/cjs/internals/Tree/utils/findNodeOfTree.js +26 -0
  217. package/cjs/internals/Tree/utils/getParentMap.d.ts +15 -0
  218. package/cjs/internals/Tree/utils/getParentMap.js +52 -0
  219. package/cjs/internals/Tree/utils/getPathTowardsItem.d.ts +4 -0
  220. package/cjs/internals/Tree/utils/getPathTowardsItem.js +16 -0
  221. package/cjs/internals/Tree/utils/index.d.ts +4 -0
  222. package/cjs/internals/Tree/utils/index.js +14 -0
  223. package/cjs/internals/Windowing/List.d.ts +1 -0
  224. package/cjs/internals/Windowing/List.js +5 -1
  225. package/cjs/internals/Windowing/index.d.ts +1 -1
  226. package/cjs/internals/Windowing/index.js +4 -2
  227. package/cjs/internals/hooks/index.d.ts +1 -0
  228. package/cjs/internals/hooks/index.js +8 -0
  229. package/cjs/internals/hooks/useFoucsVirtualListItem.d.ts +7 -0
  230. package/cjs/internals/hooks/useFoucsVirtualListItem.js +26 -0
  231. package/cjs/{utils → internals/utils}/getSafeRegExpString.d.ts +1 -1
  232. package/cjs/{utils → internals/utils}/getSafeRegExpString.js +1 -1
  233. package/cjs/internals/utils/index.d.ts +2 -0
  234. package/cjs/internals/utils/index.js +9 -0
  235. package/cjs/internals/utils/stringifyReactNode.d.ts +2 -0
  236. package/cjs/internals/utils/stringifyReactNode.js +17 -0
  237. package/cjs/utils/constants.d.ts +0 -2
  238. package/cjs/utils/constants.js +1 -6
  239. package/cjs/utils/getDataGroupBy.js +3 -3
  240. package/cjs/utils/index.d.ts +0 -3
  241. package/cjs/utils/index.js +1 -10
  242. package/cjs/utils/useIsomorphicLayoutEffect.d.ts +2 -2
  243. package/dist/rsuite-no-reset-rtl.css +301 -302
  244. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  245. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  246. package/dist/rsuite-no-reset.css +303 -306
  247. package/dist/rsuite-no-reset.min.css +1 -1
  248. package/dist/rsuite-no-reset.min.css.map +1 -1
  249. package/dist/rsuite-rtl.css +302 -303
  250. package/dist/rsuite-rtl.min.css +1 -1
  251. package/dist/rsuite-rtl.min.css.map +1 -1
  252. package/dist/rsuite.css +304 -307
  253. package/dist/rsuite.js +657 -140
  254. package/dist/rsuite.js.map +1 -1
  255. package/dist/rsuite.min.css +1 -1
  256. package/dist/rsuite.min.css.map +1 -1
  257. package/dist/rsuite.min.js +1 -1
  258. package/dist/rsuite.min.js.map +1 -1
  259. package/esm/@types/common.d.ts +41 -4
  260. package/esm/AutoComplete/AutoComplete.js +2 -1
  261. package/esm/CascadeTree/CascadeTree.js +2 -1
  262. package/esm/CascadeTree/SearchView.js +6 -13
  263. package/esm/CascadeTree/hooks/usePaths.js +1 -1
  264. package/esm/CascadeTree/hooks/useSearch.js +2 -1
  265. package/esm/CascadeTree/utils.d.ts +0 -11
  266. package/esm/CascadeTree/utils.js +0 -22
  267. package/esm/Cascader/Cascader.js +2 -1
  268. package/esm/CheckPicker/CheckPicker.js +4 -7
  269. package/esm/CheckTree/CheckTree.d.ts +16 -0
  270. package/esm/CheckTree/CheckTree.js +105 -0
  271. package/esm/CheckTree/CheckTreeNode.d.ts +72 -0
  272. package/esm/CheckTree/CheckTreeNode.js +110 -0
  273. package/esm/CheckTree/CheckTreeView.d.ts +70 -0
  274. package/esm/CheckTree/CheckTreeView.js +304 -0
  275. package/esm/CheckTree/hooks/useTreeCheckState.d.ts +10 -0
  276. package/esm/CheckTree/hooks/useTreeCheckState.js +87 -0
  277. package/esm/CheckTree/hooks/useTreeNodeProps.d.ts +22 -0
  278. package/esm/CheckTree/hooks/useTreeNodeProps.js +52 -0
  279. package/esm/CheckTree/hooks/useTreeValue.d.ts +5 -0
  280. package/esm/CheckTree/hooks/useTreeValue.js +16 -0
  281. package/esm/CheckTree/index.d.ts +2 -14
  282. package/esm/CheckTree/index.js +1 -21
  283. package/esm/CheckTree/utils.d.ts +53 -0
  284. package/esm/{CheckTreePicker → CheckTree}/utils.js +72 -22
  285. package/esm/CheckTreePicker/CheckTreePicker.d.ts +30 -12
  286. package/esm/CheckTreePicker/CheckTreePicker.js +156 -607
  287. package/esm/CheckTreePicker/hooks/useFocusState.d.ts +16 -0
  288. package/esm/CheckTreePicker/hooks/useFocusState.js +37 -0
  289. package/esm/DateInput/DateField.js +3 -1
  290. package/esm/DateInput/DateInput.js +19 -18
  291. package/{cjs/DateInput → esm/DateInput/hooks}/useDateInputState.d.ts +1 -1
  292. package/esm/DateInput/{useDateInputState.js → hooks/useDateInputState.js} +2 -2
  293. package/esm/DateInput/hooks/useFieldCursor.d.ts +6 -0
  294. package/esm/DateInput/hooks/useFieldCursor.js +49 -0
  295. package/esm/DateInput/hooks/useSelectedState.d.ts +14 -0
  296. package/esm/DateInput/hooks/useSelectedState.js +17 -0
  297. package/esm/DateInput/index.d.ts +5 -3
  298. package/esm/DateInput/index.js +5 -3
  299. package/esm/DateInput/utils.d.ts +0 -1
  300. package/esm/DateInput/utils.js +2 -23
  301. package/esm/DatePicker/DatePicker.d.ts +4 -0
  302. package/esm/DatePicker/DatePicker.js +20 -5
  303. package/esm/DatePicker/types.d.ts +0 -4
  304. package/esm/DateRangeInput/DateRangeInput.js +17 -18
  305. package/esm/DateRangePicker/DateRangePicker.d.ts +51 -23
  306. package/esm/DateRangePicker/DateRangePicker.js +71 -51
  307. package/esm/DateRangePicker/hooks/useDateDisabled.d.ts +16 -0
  308. package/esm/DateRangePicker/hooks/useDateDisabled.js +26 -0
  309. package/esm/DateRangePicker/types.d.ts +1 -0
  310. package/esm/Highlight/Highlight.d.ts +14 -0
  311. package/esm/Highlight/Highlight.js +52 -0
  312. package/esm/Highlight/index.d.ts +3 -0
  313. package/esm/Highlight/index.js +3 -0
  314. package/esm/Highlight/utils/highlightText.d.ts +5 -0
  315. package/esm/Highlight/utils/highlightText.js +25 -0
  316. package/esm/InputPicker/InputPicker.js +3 -7
  317. package/esm/MultiCascadeTree/SearchView.js +6 -14
  318. package/esm/MultiCascadeTree/hooks/useCascadeValue.js +15 -1
  319. package/esm/MultiCascadeTree/hooks/useColumnData.js +1 -1
  320. package/esm/MultiCascadeTree/hooks/useFlattenData.js +1 -1
  321. package/esm/MultiCascadeTree/hooks/useSearch.js +2 -1
  322. package/esm/MultiCascadeTree/utils.d.ts +4 -4
  323. package/esm/MultiCascadeTree/utils.js +18 -9
  324. package/esm/MultiCascader/MultiCascader.js +1 -1
  325. package/esm/SelectPicker/SelectPicker.js +2 -6
  326. package/esm/Tree/IndentLine.d.ts +3 -0
  327. package/esm/Tree/IndentLine.js +12 -0
  328. package/esm/Tree/Tree.d.ts +4 -92
  329. package/esm/Tree/Tree.js +78 -18
  330. package/esm/Tree/TreeNode.d.ts +101 -0
  331. package/esm/Tree/TreeNode.js +141 -0
  332. package/esm/Tree/TreeNodeToggle.d.ts +9 -0
  333. package/esm/Tree/TreeNodeToggle.js +50 -0
  334. package/esm/Tree/TreeProvider.d.ts +52 -0
  335. package/esm/Tree/TreeProvider.js +74 -0
  336. package/esm/Tree/TreeView.d.ts +68 -0
  337. package/esm/Tree/TreeView.js +299 -0
  338. package/esm/Tree/hooks/useExpandTree.d.ts +60 -0
  339. package/esm/Tree/hooks/useExpandTree.js +70 -0
  340. package/esm/Tree/hooks/useFlattenTree.d.ts +42 -0
  341. package/esm/Tree/hooks/useFlattenTree.js +92 -0
  342. package/esm/Tree/hooks/useFocusTree.d.ts +24 -0
  343. package/esm/Tree/hooks/useFocusTree.js +153 -0
  344. package/esm/Tree/hooks/useForceUpdate.d.ts +2 -0
  345. package/esm/Tree/hooks/useForceUpdate.js +11 -0
  346. package/esm/Tree/hooks/useTreeDrag.d.ts +32 -0
  347. package/esm/Tree/hooks/useTreeDrag.js +264 -0
  348. package/esm/Tree/hooks/useTreeNodeProps.d.ts +29 -0
  349. package/esm/Tree/hooks/useTreeNodeProps.js +76 -0
  350. package/esm/Tree/hooks/useTreeNodeRefs.d.ts +6 -0
  351. package/esm/Tree/hooks/useTreeNodeRefs.js +18 -0
  352. package/esm/Tree/hooks/useTreeSearch.d.ts +18 -0
  353. package/esm/Tree/hooks/useTreeSearch.js +69 -0
  354. package/esm/Tree/hooks/useTreeWithChildren.d.ts +14 -0
  355. package/esm/Tree/hooks/useTreeWithChildren.js +59 -0
  356. package/esm/Tree/hooks/useVirtualizedTreeData.d.ts +7 -0
  357. package/esm/Tree/hooks/useVirtualizedTreeData.js +77 -0
  358. package/esm/Tree/types.d.ts +257 -0
  359. package/esm/Tree/types.js +30 -0
  360. package/esm/Tree/utils/flattenTree.d.ts +25 -0
  361. package/esm/Tree/utils/flattenTree.js +88 -0
  362. package/esm/Tree/utils/focusableTree.d.ts +55 -0
  363. package/esm/Tree/utils/focusableTree.js +146 -0
  364. package/esm/Tree/utils/formatNodeRefKey.d.ts +4 -0
  365. package/esm/Tree/utils/formatNodeRefKey.js +7 -0
  366. package/esm/Tree/utils/getExpandItemValues.d.ts +11 -0
  367. package/esm/Tree/utils/getExpandItemValues.js +17 -0
  368. package/esm/Tree/utils/getNodeParentKeys.d.ts +5 -0
  369. package/esm/Tree/utils/getNodeParentKeys.js +17 -0
  370. package/esm/Tree/utils/getTreeActiveNode.d.ts +5 -0
  371. package/esm/Tree/utils/getTreeActiveNode.js +16 -0
  372. package/esm/Tree/utils/hasVisibleChildren.d.ts +5 -0
  373. package/esm/Tree/utils/hasVisibleChildren.js +12 -0
  374. package/esm/Tree/utils/indentTreeNode.d.ts +3 -0
  375. package/esm/Tree/utils/indentTreeNode.js +14 -0
  376. package/esm/Tree/utils/index.d.ts +11 -0
  377. package/esm/Tree/utils/index.js +14 -0
  378. package/esm/Tree/utils/isExpand.d.ts +6 -0
  379. package/esm/Tree/utils/isExpand.js +11 -0
  380. package/esm/Tree/utils/isSearching.d.ts +1 -0
  381. package/esm/Tree/utils/isSearching.js +5 -0
  382. package/esm/Tree/utils/treeKeyboardInteractions.d.ts +21 -0
  383. package/esm/Tree/utils/treeKeyboardInteractions.js +43 -0
  384. package/esm/TreePicker/TreePicker.d.ts +27 -21
  385. package/esm/TreePicker/TreePicker.js +158 -579
  386. package/esm/TreePicker/hooks/useFocusState.d.ts +20 -0
  387. package/esm/TreePicker/hooks/useFocusState.js +48 -0
  388. package/esm/index.d.ts +2 -0
  389. package/esm/index.js +1 -0
  390. package/esm/internals/Picker/Listbox.d.ts +40 -10
  391. package/esm/internals/Picker/Listbox.js +22 -16
  392. package/esm/internals/Picker/PickerIndicator.d.ts +2 -1
  393. package/esm/internals/Picker/PickerIndicator.js +7 -3
  394. package/esm/internals/Picker/hooks/useFocusItemValue.js +1 -1
  395. package/esm/internals/Picker/hooks/usePickerRef.d.ts +1 -4
  396. package/esm/internals/Picker/hooks/usePickerRef.js +3 -20
  397. package/esm/internals/Picker/index.d.ts +0 -1
  398. package/esm/internals/Picker/index.js +0 -1
  399. package/esm/internals/Picker/utils.js +1 -1
  400. package/esm/internals/{Picker → Tree}/TreeView.js +1 -1
  401. package/esm/internals/Tree/index.d.ts +1 -0
  402. package/esm/internals/Tree/index.js +2 -0
  403. package/esm/internals/Tree/utils/filterNodesOfTree.d.ts +5 -0
  404. package/esm/internals/Tree/utils/filterNodesOfTree.js +26 -0
  405. package/esm/internals/Tree/utils/findNodeOfTree.d.ts +1 -0
  406. package/esm/internals/Tree/utils/findNodeOfTree.js +22 -0
  407. package/esm/internals/Tree/utils/getParentMap.d.ts +15 -0
  408. package/esm/internals/Tree/utils/getParentMap.js +47 -0
  409. package/esm/internals/Tree/utils/getPathTowardsItem.d.ts +4 -0
  410. package/esm/internals/Tree/utils/getPathTowardsItem.js +12 -0
  411. package/esm/internals/Tree/utils/index.d.ts +4 -0
  412. package/esm/internals/Tree/utils/index.js +5 -0
  413. package/esm/internals/Windowing/List.d.ts +1 -0
  414. package/esm/internals/Windowing/List.js +3 -0
  415. package/esm/internals/Windowing/index.d.ts +1 -1
  416. package/esm/internals/Windowing/index.js +1 -1
  417. package/esm/internals/hooks/index.d.ts +1 -0
  418. package/esm/internals/hooks/index.js +2 -0
  419. package/esm/internals/hooks/useFoucsVirtualListItem.d.ts +7 -0
  420. package/esm/internals/hooks/useFoucsVirtualListItem.js +22 -0
  421. package/esm/{utils → internals/utils}/getSafeRegExpString.d.ts +1 -1
  422. package/esm/{utils → internals/utils}/getSafeRegExpString.js +1 -1
  423. package/esm/internals/utils/index.d.ts +2 -0
  424. package/esm/internals/utils/index.js +3 -0
  425. package/esm/internals/utils/stringifyReactNode.d.ts +2 -0
  426. package/esm/internals/utils/stringifyReactNode.js +12 -0
  427. package/esm/utils/constants.d.ts +0 -2
  428. package/esm/utils/constants.js +0 -3
  429. package/esm/utils/getDataGroupBy.js +1 -1
  430. package/esm/utils/index.d.ts +0 -3
  431. package/esm/utils/index.js +0 -3
  432. package/esm/utils/useIsomorphicLayoutEffect.d.ts +2 -2
  433. package/internals/Picker/styles/index.less +27 -1
  434. package/package.json +2 -2
  435. package/styles/color-modes/dark.less +5 -1
  436. package/styles/color-modes/high-contrast.less +8 -2
  437. package/styles/color-modes/light.less +10 -5
  438. package/styles/index.less +1 -0
  439. package/TreePicker/styles/mixin.less +0 -7
  440. package/cjs/CheckTreePicker/CheckTreeNode.d.ts +0 -28
  441. package/cjs/CheckTreePicker/CheckTreeNode.js +0 -140
  442. package/cjs/CheckTreePicker/utils.d.ts +0 -44
  443. package/cjs/Tree/TreeContext.d.ts +0 -6
  444. package/cjs/Tree/TreeContext.js +0 -10
  445. package/cjs/TreePicker/TreeNode.d.ts +0 -36
  446. package/cjs/TreePicker/TreeNode.js +0 -174
  447. package/cjs/utils/appendTooltip.d.ts +0 -10
  448. package/cjs/utils/appendTooltip.js +0 -20
  449. package/cjs/utils/stringToObject.d.ts +0 -2
  450. package/cjs/utils/stringToObject.js +0 -19
  451. package/cjs/utils/treeUtils.d.ts +0 -304
  452. package/cjs/utils/treeUtils.js +0 -1095
  453. package/esm/CheckTreePicker/CheckTreeNode.d.ts +0 -28
  454. package/esm/CheckTreePicker/CheckTreeNode.js +0 -133
  455. package/esm/CheckTreePicker/utils.d.ts +0 -44
  456. package/esm/Tree/TreeContext.d.ts +0 -6
  457. package/esm/Tree/TreeContext.js +0 -4
  458. package/esm/TreePicker/TreeNode.d.ts +0 -36
  459. package/esm/TreePicker/TreeNode.js +0 -167
  460. package/esm/utils/appendTooltip.d.ts +0 -10
  461. package/esm/utils/appendTooltip.js +0 -15
  462. package/esm/utils/stringToObject.d.ts +0 -2
  463. package/esm/utils/stringToObject.js +0 -14
  464. package/esm/utils/treeUtils.d.ts +0 -304
  465. package/esm/utils/treeUtils.js +0 -1043
  466. /package/cjs/DateInput/{useIsFocused.d.ts → hooks/useIsFocused.d.ts} +0 -0
  467. /package/cjs/DateInput/{useIsFocused.js → hooks/useIsFocused.js} +0 -0
  468. /package/cjs/DateInput/{useKeyboardInputEvent.d.ts → hooks/useKeyboardInputEvent.d.ts} +0 -0
  469. /package/cjs/DateInput/{useKeyboardInputEvent.js → hooks/useKeyboardInputEvent.js} +0 -0
  470. /package/cjs/internals/{Picker → Tree}/TreeView.d.ts +0 -0
  471. /package/esm/DateInput/{useIsFocused.d.ts → hooks/useIsFocused.d.ts} +0 -0
  472. /package/esm/DateInput/{useIsFocused.js → hooks/useIsFocused.js} +0 -0
  473. /package/esm/DateInput/{useKeyboardInputEvent.d.ts → hooks/useKeyboardInputEvent.d.ts} +0 -0
  474. /package/esm/DateInput/{useKeyboardInputEvent.js → hooks/useKeyboardInputEvent.js} +0 -0
  475. /package/esm/internals/{Picker → Tree}/TreeView.d.ts +0 -0
@@ -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;
@@ -0,0 +1,141 @@
1
+ 'use client';
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
+ import React, { forwardRef, useMemo } from 'react';
5
+ import { useClassNames, useEventCallback, mergeRefs, useCustom } from '../utils';
6
+ import { stringifyReactNode } from '../internals/utils';
7
+ import { useFoucsVirtualListItem } from '../internals/hooks';
8
+ import TreeNodeToggle from './TreeNodeToggle';
9
+ import { useTreeContextProps } from './TreeProvider';
10
+ import { indentTreeNode } from './utils';
11
+
12
+ /**
13
+ * Props for the TreeNode component.
14
+ */
15
+
16
+ var TreeNode = /*#__PURE__*/forwardRef(function (props, ref) {
17
+ var _props$as = props.as,
18
+ Component = _props$as === void 0 ? 'div' : _props$as,
19
+ label = props.label,
20
+ layer = props.layer,
21
+ active = props.active,
22
+ loading = props.loading,
23
+ nodeData = props.nodeData,
24
+ className = props.className,
25
+ _props$classPrefix = props.classPrefix,
26
+ classPrefix = _props$classPrefix === void 0 ? 'tree-node' : _props$classPrefix,
27
+ disabled = props.disabled,
28
+ _props$visible = props.visible,
29
+ visible = _props$visible === void 0 ? true : _props$visible,
30
+ draggable = props.draggable,
31
+ expanded = props.expanded,
32
+ focus = props.focus,
33
+ style = props.style,
34
+ hasChildren = props.hasChildren,
35
+ dragging = props.dragging,
36
+ dragStatus = props.dragStatus,
37
+ onSelect = props.onSelect,
38
+ onDragStart = props.onDragStart,
39
+ onDragOver = props.onDragOver,
40
+ onDragEnter = props.onDragEnter,
41
+ onDragLeave = props.onDragLeave,
42
+ onDragEnd = props.onDragEnd,
43
+ onDrop = props.onDrop,
44
+ onExpand = props.onExpand,
45
+ rest = _objectWithoutPropertiesLoose(props, ["as", "label", "layer", "active", "loading", "nodeData", "className", "classPrefix", "disabled", "visible", "draggable", "expanded", "focus", "style", "hasChildren", "dragging", "dragStatus", "onSelect", "onDragStart", "onDragOver", "onDragEnter", "onDragLeave", "onDragEnd", "onDrop", "onExpand"]);
46
+ var _useCustom = useCustom(),
47
+ rtl = _useCustom.rtl;
48
+ var _useTreeContextProps = useTreeContextProps(),
49
+ renderTreeNode = _useTreeContextProps.renderTreeNode,
50
+ virtualized = _useTreeContextProps.virtualized;
51
+ var _useClassNames = useClassNames(classPrefix),
52
+ prefix = _useClassNames.prefix,
53
+ merge = _useClassNames.merge,
54
+ withClassPrefix = _useClassNames.withClassPrefix;
55
+ var labelStr = useMemo(function () {
56
+ return stringifyReactNode(label);
57
+ }, [label]);
58
+ var handleExpand = useEventCallback(function (event) {
59
+ var _event$nativeEvent, _event$nativeEvent$st;
60
+ // Stop propagation when using custom loading icon
61
+ event === null || event === void 0 ? void 0 : (_event$nativeEvent = event.nativeEvent) === null || _event$nativeEvent === void 0 ? void 0 : (_event$nativeEvent$st = _event$nativeEvent.stopImmediatePropagation) === null || _event$nativeEvent$st === void 0 ? void 0 : _event$nativeEvent$st.call(_event$nativeEvent);
62
+ event.stopPropagation();
63
+ onExpand === null || onExpand === void 0 ? void 0 : onExpand(nodeData, expanded);
64
+ });
65
+ var handleSelect = useEventCallback(function (event) {
66
+ if (disabled) {
67
+ return;
68
+ }
69
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(nodeData, event);
70
+ });
71
+ var handleDragStart = useEventCallback(function (event) {
72
+ onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(nodeData, event);
73
+ });
74
+ var handleDragEnter = useEventCallback(function (event) {
75
+ event.preventDefault();
76
+ event.stopPropagation();
77
+ onDragEnter === null || onDragEnter === void 0 ? void 0 : onDragEnter(nodeData, event);
78
+ });
79
+ var handleDragOver = useEventCallback(function (event) {
80
+ event.preventDefault();
81
+ event.stopPropagation();
82
+ onDragOver === null || onDragOver === void 0 ? void 0 : onDragOver(nodeData, event);
83
+ });
84
+ var handleDragLeave = useEventCallback(function (event) {
85
+ event.stopPropagation();
86
+ onDragLeave === null || onDragLeave === void 0 ? void 0 : onDragLeave(nodeData, event);
87
+ });
88
+ var handleDragEnd = useEventCallback(function (event) {
89
+ event.stopPropagation();
90
+ onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(nodeData, event);
91
+ });
92
+ var handleDrop = useEventCallback(function (event) {
93
+ event.preventDefault();
94
+ event.stopPropagation();
95
+ onDrop === null || onDrop === void 0 ? void 0 : onDrop(nodeData, event);
96
+ });
97
+ var classes = merge(className, withClassPrefix({
98
+ disabled: disabled,
99
+ active: active,
100
+ 'text-muted': disabled,
101
+ focus: focus
102
+ }));
103
+ var treeItemRef = useFoucsVirtualListItem(focus);
104
+ var styles = virtualized ? _extends({}, style, indentTreeNode(rtl, layer - 1)) : style;
105
+ return visible ? /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
106
+ ref: mergeRefs(treeItemRef, ref),
107
+ role: "treeitem",
108
+ tabIndex: -1,
109
+ "aria-expanded": expanded,
110
+ "aria-label": labelStr,
111
+ "aria-level": layer,
112
+ "aria-disabled": disabled,
113
+ "aria-selected": active,
114
+ "data-layer": layer,
115
+ "data-key": (nodeData === null || nodeData === void 0 ? void 0 : nodeData.refKey) || '',
116
+ title: labelStr,
117
+ className: classes,
118
+ style: styles,
119
+ draggable: draggable,
120
+ onClick: handleSelect,
121
+ onDragStart: handleDragStart,
122
+ onDragEnter: handleDragEnter,
123
+ onDragOver: handleDragOver,
124
+ onDragLeave: handleDragLeave,
125
+ onDragEnd: handleDragEnd,
126
+ onDrop: handleDrop
127
+ }), /*#__PURE__*/React.createElement(TreeNodeToggle, {
128
+ "aria-label": (expanded ? 'Collapse' : 'Expand') + (" " + labelStr),
129
+ data: nodeData,
130
+ loading: loading,
131
+ expanded: expanded,
132
+ hasChildren: hasChildren,
133
+ onClick: handleExpand
134
+ }), /*#__PURE__*/React.createElement("span", {
135
+ className: prefix('label', dragStatus, {
136
+ dragging: dragging
137
+ })
138
+ }, renderTreeNode ? renderTreeNode(nodeData) : label)) : null;
139
+ });
140
+ TreeNode.displayName = 'TreeNode';
141
+ export default TreeNode;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ interface TreeNodeToggleProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ data: any;
4
+ loading?: boolean;
5
+ expanded?: boolean;
6
+ hasChildren?: boolean;
7
+ }
8
+ declare function TreeNodeToggle(props: TreeNodeToggleProps): JSX.Element;
9
+ export default TreeNodeToggle;
@@ -0,0 +1,50 @@
1
+ 'use client';
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
+ import React from 'react';
5
+ import ArrowDownIcon from '@rsuite/icons/ArrowDown';
6
+ import ArrowRightIcon from '@rsuite/icons/ArrowRight';
7
+ import ArrowLeftIcon from '@rsuite/icons/ArrowLeft';
8
+ import Spinner from '@rsuite/icons/legacy/Spinner';
9
+ import { useClassNames, useCustom } from '../utils';
10
+ import { useTreeCustomRenderer } from './TreeProvider';
11
+ function TreeNodeToggle(props) {
12
+ var data = props.data,
13
+ loading = props.loading,
14
+ expanded = props.expanded,
15
+ hasChildren = props.hasChildren,
16
+ rest = _objectWithoutPropertiesLoose(props, ["data", "loading", "expanded", "hasChildren"]);
17
+ var _useCustom = useCustom(),
18
+ rtl = _useCustom.rtl;
19
+ var _useTreeCustomRendere = useTreeCustomRenderer(),
20
+ renderTreeIcon = _useTreeCustomRendere.renderTreeIcon;
21
+ var _useClassNames = useClassNames('tree-node'),
22
+ prefix = _useClassNames.prefix;
23
+ var IconElementType = expanded ? ArrowDownIcon : rtl ? ArrowLeftIcon : ArrowRightIcon;
24
+ var icon = /*#__PURE__*/React.createElement(IconElementType, {
25
+ className: prefix('toggle-icon')
26
+ });
27
+ if (loading) {
28
+ icon = /*#__PURE__*/React.createElement("div", {
29
+ className: prefix('loading-icon')
30
+ }, /*#__PURE__*/React.createElement(Spinner, {
31
+ spin: true
32
+ }));
33
+ }
34
+ if (data !== undefined && typeof renderTreeIcon === 'function') {
35
+ var customIcon = renderTreeIcon(data, expanded);
36
+ icon = customIcon !== null ? /*#__PURE__*/React.createElement("div", {
37
+ className: prefix('custom-icon')
38
+ }, customIcon) : icon;
39
+ }
40
+ return hasChildren ? /*#__PURE__*/React.createElement("div", _extends({
41
+ tabIndex: -1,
42
+ role: "button",
43
+ "aria-busy": loading ? true : undefined,
44
+ "data-ref": data.refKey,
45
+ className: prefix('toggle')
46
+ }, rest), icon) : /*#__PURE__*/React.createElement("div", {
47
+ className: prefix('toggle-placeholder')
48
+ });
49
+ }
50
+ export default TreeNodeToggle;