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,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/cjs/Tree/Tree.js CHANGED
@@ -4,37 +4,96 @@
4
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
5
5
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
6
  exports.__esModule = true;
7
- exports.default = exports.TREE_NODE_DROP_POSITION = void 0;
7
+ exports.default = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
10
  var _react = _interopRequireWildcard(require("react"));
10
- var _TreePicker = _interopRequireDefault(require("../TreePicker"));
11
- var _TreeContext = _interopRequireDefault(require("./TreeContext"));
12
- /**
13
- * Tree Node Drag Type
14
- */
15
- var TREE_NODE_DROP_POSITION;
16
- exports.TREE_NODE_DROP_POSITION = TREE_NODE_DROP_POSITION;
17
- (function (TREE_NODE_DROP_POSITION) {
18
- TREE_NODE_DROP_POSITION[TREE_NODE_DROP_POSITION["DRAG_OVER"] = 0] = "DRAG_OVER";
19
- TREE_NODE_DROP_POSITION[TREE_NODE_DROP_POSITION["DRAG_OVER_TOP"] = 1] = "DRAG_OVER_TOP";
20
- TREE_NODE_DROP_POSITION[TREE_NODE_DROP_POSITION["DRAG_OVER_BOTTOM"] = 2] = "DRAG_OVER_BOTTOM";
21
- })(TREE_NODE_DROP_POSITION || (exports.TREE_NODE_DROP_POSITION = TREE_NODE_DROP_POSITION = {}));
11
+ var _TreeView = _interopRequireDefault(require("./TreeView"));
12
+ var _utils = require("../utils");
13
+ var _useFlattenTree = _interopRequireDefault(require("./hooks/useFlattenTree"));
14
+ var _useTreeWithChildren2 = _interopRequireDefault(require("./hooks/useTreeWithChildren"));
15
+ var _useExpandTree2 = _interopRequireDefault(require("./hooks/useExpandTree"));
16
+ var _TreeProvider = require("./TreeProvider");
22
17
  /**
23
18
  * The `Tree` component is used to display hierarchical data.
24
19
  *
25
20
  * @see https://rsuitejs.com/components/tree
26
21
  */
27
22
  var Tree = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
28
- var contextValue = (0, _react.useMemo)(function () {
23
+ var controlledValue = props.value,
24
+ defaultValue = props.defaultValue,
25
+ _props$childrenKey = props.childrenKey,
26
+ childrenKey = _props$childrenKey === void 0 ? 'children' : _props$childrenKey,
27
+ _props$labelKey = props.labelKey,
28
+ labelKey = _props$labelKey === void 0 ? 'label' : _props$labelKey,
29
+ _props$valueKey = props.valueKey,
30
+ valueKey = _props$valueKey === void 0 ? 'value' : _props$valueKey,
31
+ data = props.data,
32
+ _props$defaultExpandA = props.defaultExpandAll,
33
+ defaultExpandAll = _props$defaultExpandA === void 0 ? false : _props$defaultExpandA,
34
+ _props$defaultExpandI = props.defaultExpandItemValues,
35
+ defaultExpandItemValues = _props$defaultExpandI === void 0 ? [] : _props$defaultExpandI,
36
+ controlledExpandItemValues = props.expandItemValues,
37
+ virtualized = props.virtualized,
38
+ renderTreeIcon = props.renderTreeIcon,
39
+ renderTreeNode = props.renderTreeNode,
40
+ getChildren = props.getChildren,
41
+ onChange = props.onChange,
42
+ onExpand = props.onExpand,
43
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["value", "defaultValue", "childrenKey", "labelKey", "valueKey", "data", "defaultExpandAll", "defaultExpandItemValues", "expandItemValues", "virtualized", "renderTreeIcon", "renderTreeNode", "getChildren", "onChange", "onExpand"]);
44
+ var _useControlled = (0, _utils.useControlled)(controlledValue, defaultValue),
45
+ value = _useControlled[0],
46
+ setValue = _useControlled[1];
47
+ var itemDataKeys = {
48
+ childrenKey: childrenKey,
49
+ labelKey: labelKey,
50
+ valueKey: valueKey
51
+ };
52
+ var _useTreeWithChildren = (0, _useTreeWithChildren2.default)(data, itemDataKeys),
53
+ treeData = _useTreeWithChildren.treeData,
54
+ loadingNodeValues = _useTreeWithChildren.loadingNodeValues,
55
+ appendChild = _useTreeWithChildren.appendChild;
56
+ var flattenedNodes = (0, _useFlattenTree.default)(treeData, (0, _extends2.default)({}, itemDataKeys));
57
+ var _useExpandTree = (0, _useExpandTree2.default)(data, (0, _extends2.default)({}, itemDataKeys, {
58
+ defaultExpandAll: defaultExpandAll,
59
+ defaultExpandItemValues: defaultExpandItemValues,
60
+ controlledExpandItemValues: controlledExpandItemValues,
61
+ onExpand: onExpand,
62
+ getChildren: getChildren,
63
+ appendChild: appendChild
64
+ })),
65
+ expandItemValues = _useExpandTree.expandItemValues,
66
+ handleExpandTreeNode = _useExpandTree.handleExpandTreeNode;
67
+ var handleChange = (0, _utils.useEventCallback)(function (nextValue, event) {
68
+ setValue(nextValue);
69
+ onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
70
+ });
71
+ var treeContext = (0, _react.useMemo)(function () {
29
72
  return {
30
- inline: true
73
+ props: {
74
+ childrenKey: childrenKey,
75
+ labelKey: labelKey,
76
+ valueKey: valueKey,
77
+ virtualized: virtualized,
78
+ renderTreeIcon: renderTreeIcon,
79
+ renderTreeNode: renderTreeNode
80
+ }
31
81
  };
32
- }, []);
33
- return /*#__PURE__*/_react.default.createElement(_TreeContext.default.Provider, {
34
- value: contextValue
35
- }, /*#__PURE__*/_react.default.createElement(_TreePicker.default, (0, _extends2.default)({
82
+ }, [childrenKey, labelKey, valueKey, virtualized, renderTreeIcon, renderTreeNode]);
83
+ return /*#__PURE__*/_react.default.createElement(_TreeProvider.TreeProvider, {
84
+ value: treeContext
85
+ }, /*#__PURE__*/_react.default.createElement(_TreeView.default, (0, _extends2.default)({
36
86
  ref: ref
37
- }, props)));
87
+ }, rest, {
88
+ value: value,
89
+ data: treeData,
90
+ virtualized: virtualized,
91
+ loadingNodeValues: loadingNodeValues,
92
+ flattenedNodes: flattenedNodes,
93
+ expandItemValues: expandItemValues,
94
+ onChange: handleChange,
95
+ onExpand: handleExpandTreeNode
96
+ })));
38
97
  });
39
98
  Tree.displayName = 'Tree';
40
99
  var _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,147 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+ exports.__esModule = true;
7
+ exports.default = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _utils = require("../utils");
12
+ var _utils2 = require("../internals/utils");
13
+ var _hooks = require("../internals/hooks");
14
+ var _TreeNodeToggle = _interopRequireDefault(require("./TreeNodeToggle"));
15
+ var _TreeProvider = require("./TreeProvider");
16
+ var _utils3 = require("./utils");
17
+ /**
18
+ * Props for the TreeNode component.
19
+ */
20
+
21
+ var TreeNode = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
22
+ var _props$as = props.as,
23
+ Component = _props$as === void 0 ? 'div' : _props$as,
24
+ label = props.label,
25
+ layer = props.layer,
26
+ active = props.active,
27
+ loading = props.loading,
28
+ nodeData = props.nodeData,
29
+ className = props.className,
30
+ _props$classPrefix = props.classPrefix,
31
+ classPrefix = _props$classPrefix === void 0 ? 'tree-node' : _props$classPrefix,
32
+ disabled = props.disabled,
33
+ _props$visible = props.visible,
34
+ visible = _props$visible === void 0 ? true : _props$visible,
35
+ draggable = props.draggable,
36
+ expanded = props.expanded,
37
+ focus = props.focus,
38
+ style = props.style,
39
+ hasChildren = props.hasChildren,
40
+ dragging = props.dragging,
41
+ dragStatus = props.dragStatus,
42
+ onSelect = props.onSelect,
43
+ onDragStart = props.onDragStart,
44
+ onDragOver = props.onDragOver,
45
+ onDragEnter = props.onDragEnter,
46
+ onDragLeave = props.onDragLeave,
47
+ onDragEnd = props.onDragEnd,
48
+ onDrop = props.onDrop,
49
+ onExpand = props.onExpand,
50
+ rest = (0, _objectWithoutPropertiesLoose2.default)(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"]);
51
+ var _useCustom = (0, _utils.useCustom)(),
52
+ rtl = _useCustom.rtl;
53
+ var _useTreeContextProps = (0, _TreeProvider.useTreeContextProps)(),
54
+ renderTreeNode = _useTreeContextProps.renderTreeNode,
55
+ virtualized = _useTreeContextProps.virtualized;
56
+ var _useClassNames = (0, _utils.useClassNames)(classPrefix),
57
+ prefix = _useClassNames.prefix,
58
+ merge = _useClassNames.merge,
59
+ withClassPrefix = _useClassNames.withClassPrefix;
60
+ var labelStr = (0, _react.useMemo)(function () {
61
+ return (0, _utils2.stringifyReactNode)(label);
62
+ }, [label]);
63
+ var handleExpand = (0, _utils.useEventCallback)(function (event) {
64
+ var _event$nativeEvent, _event$nativeEvent$st;
65
+ // Stop propagation when using custom loading icon
66
+ 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);
67
+ event.stopPropagation();
68
+ onExpand === null || onExpand === void 0 ? void 0 : onExpand(nodeData, expanded);
69
+ });
70
+ var handleSelect = (0, _utils.useEventCallback)(function (event) {
71
+ if (disabled) {
72
+ return;
73
+ }
74
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(nodeData, event);
75
+ });
76
+ var handleDragStart = (0, _utils.useEventCallback)(function (event) {
77
+ onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(nodeData, event);
78
+ });
79
+ var handleDragEnter = (0, _utils.useEventCallback)(function (event) {
80
+ event.preventDefault();
81
+ event.stopPropagation();
82
+ onDragEnter === null || onDragEnter === void 0 ? void 0 : onDragEnter(nodeData, event);
83
+ });
84
+ var handleDragOver = (0, _utils.useEventCallback)(function (event) {
85
+ event.preventDefault();
86
+ event.stopPropagation();
87
+ onDragOver === null || onDragOver === void 0 ? void 0 : onDragOver(nodeData, event);
88
+ });
89
+ var handleDragLeave = (0, _utils.useEventCallback)(function (event) {
90
+ event.stopPropagation();
91
+ onDragLeave === null || onDragLeave === void 0 ? void 0 : onDragLeave(nodeData, event);
92
+ });
93
+ var handleDragEnd = (0, _utils.useEventCallback)(function (event) {
94
+ event.stopPropagation();
95
+ onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(nodeData, event);
96
+ });
97
+ var handleDrop = (0, _utils.useEventCallback)(function (event) {
98
+ event.preventDefault();
99
+ event.stopPropagation();
100
+ onDrop === null || onDrop === void 0 ? void 0 : onDrop(nodeData, event);
101
+ });
102
+ var classes = merge(className, withClassPrefix({
103
+ disabled: disabled,
104
+ active: active,
105
+ 'text-muted': disabled,
106
+ focus: focus
107
+ }));
108
+ var treeItemRef = (0, _hooks.useFoucsVirtualListItem)(focus);
109
+ var styles = virtualized ? (0, _extends2.default)({}, style, (0, _utils3.indentTreeNode)(rtl, layer - 1)) : style;
110
+ return visible ? /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
111
+ ref: (0, _utils.mergeRefs)(treeItemRef, ref),
112
+ role: "treeitem",
113
+ tabIndex: -1,
114
+ "aria-expanded": expanded,
115
+ "aria-label": labelStr,
116
+ "aria-level": layer,
117
+ "aria-disabled": disabled,
118
+ "aria-selected": active,
119
+ "data-layer": layer,
120
+ "data-key": (nodeData === null || nodeData === void 0 ? void 0 : nodeData.refKey) || '',
121
+ title: labelStr,
122
+ className: classes,
123
+ style: styles,
124
+ draggable: draggable,
125
+ onClick: handleSelect,
126
+ onDragStart: handleDragStart,
127
+ onDragEnter: handleDragEnter,
128
+ onDragOver: handleDragOver,
129
+ onDragLeave: handleDragLeave,
130
+ onDragEnd: handleDragEnd,
131
+ onDrop: handleDrop
132
+ }), /*#__PURE__*/_react.default.createElement(_TreeNodeToggle.default, {
133
+ "aria-label": (expanded ? 'Collapse' : 'Expand') + (" " + labelStr),
134
+ data: nodeData,
135
+ loading: loading,
136
+ expanded: expanded,
137
+ hasChildren: hasChildren,
138
+ onClick: handleExpand
139
+ }), /*#__PURE__*/_react.default.createElement("span", {
140
+ className: prefix('label', dragStatus, {
141
+ dragging: dragging
142
+ })
143
+ }, renderTreeNode ? renderTreeNode(nodeData) : label)) : null;
144
+ });
145
+ TreeNode.displayName = 'TreeNode';
146
+ var _default = TreeNode;
147
+ exports.default = _default;
@@ -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,56 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _ArrowDown = _interopRequireDefault(require("@rsuite/icons/ArrowDown"));
11
+ var _ArrowRight = _interopRequireDefault(require("@rsuite/icons/ArrowRight"));
12
+ var _ArrowLeft = _interopRequireDefault(require("@rsuite/icons/ArrowLeft"));
13
+ var _Spinner = _interopRequireDefault(require("@rsuite/icons/legacy/Spinner"));
14
+ var _utils = require("../utils");
15
+ var _TreeProvider = require("./TreeProvider");
16
+ function TreeNodeToggle(props) {
17
+ var data = props.data,
18
+ loading = props.loading,
19
+ expanded = props.expanded,
20
+ hasChildren = props.hasChildren,
21
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["data", "loading", "expanded", "hasChildren"]);
22
+ var _useCustom = (0, _utils.useCustom)(),
23
+ rtl = _useCustom.rtl;
24
+ var _useTreeCustomRendere = (0, _TreeProvider.useTreeCustomRenderer)(),
25
+ renderTreeIcon = _useTreeCustomRendere.renderTreeIcon;
26
+ var _useClassNames = (0, _utils.useClassNames)('tree-node'),
27
+ prefix = _useClassNames.prefix;
28
+ var IconElementType = expanded ? _ArrowDown.default : rtl ? _ArrowLeft.default : _ArrowRight.default;
29
+ var icon = /*#__PURE__*/_react.default.createElement(IconElementType, {
30
+ className: prefix('toggle-icon')
31
+ });
32
+ if (loading) {
33
+ icon = /*#__PURE__*/_react.default.createElement("div", {
34
+ className: prefix('loading-icon')
35
+ }, /*#__PURE__*/_react.default.createElement(_Spinner.default, {
36
+ spin: true
37
+ }));
38
+ }
39
+ if (data !== undefined && typeof renderTreeIcon === 'function') {
40
+ var customIcon = renderTreeIcon(data, expanded);
41
+ icon = customIcon !== null ? /*#__PURE__*/_react.default.createElement("div", {
42
+ className: prefix('custom-icon')
43
+ }, customIcon) : icon;
44
+ }
45
+ return hasChildren ? /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
46
+ tabIndex: -1,
47
+ role: "button",
48
+ "aria-busy": loading ? true : undefined,
49
+ "data-ref": data.refKey,
50
+ className: prefix('toggle')
51
+ }, rest), icon) : /*#__PURE__*/_react.default.createElement("div", {
52
+ className: prefix('toggle-placeholder')
53
+ });
54
+ }
55
+ var _default = TreeNodeToggle;
56
+ exports.default = _default;
@@ -0,0 +1,52 @@
1
+ import React from 'react';
2
+ import { TreeNode } from './types';
3
+ interface RegisterMethods {
4
+ /**
5
+ * Focuses on the first node in the tree.
6
+ */
7
+ focusTreeFirstNode: () => void;
8
+ /**
9
+ * Focuses on the active node in the tree.
10
+ */
11
+ focusTreeActiveNode: () => void;
12
+ }
13
+ declare type Unregister = () => void;
14
+ interface TreeContextValue {
15
+ register?: (methods: RegisterMethods) => Unregister;
16
+ props: {
17
+ labelKey: string;
18
+ valueKey: string;
19
+ childrenKey: string;
20
+ virtualized?: boolean;
21
+ renderTreeNode?: (nodeData: TreeNode) => React.ReactNode;
22
+ renderTreeIcon?: (nodeData: TreeNode, expanded?: boolean) => React.ReactNode;
23
+ };
24
+ }
25
+ export declare const TreeProvider: React.Provider<TreeContextValue>;
26
+ export declare const useRegisterTreeMethods: () => ((methods: RegisterMethods) => Unregister) | undefined;
27
+ export declare const useTreeCustomRenderer: () => {
28
+ renderTreeIcon: ((nodeData: TreeNode, expanded?: boolean) => React.ReactNode) | undefined;
29
+ renderTreeNode: ((nodeData: TreeNode) => React.ReactNode) | undefined;
30
+ };
31
+ export declare const useItemDataKeys: () => {
32
+ labelKey: string;
33
+ valueKey: string;
34
+ childrenKey: string;
35
+ };
36
+ export declare const useTreeContextProps: () => {
37
+ labelKey: string;
38
+ valueKey: string;
39
+ childrenKey: string;
40
+ virtualized?: boolean | undefined;
41
+ renderTreeNode?: ((nodeData: TreeNode) => React.ReactNode) | undefined;
42
+ renderTreeIcon?: ((nodeData: TreeNode, expanded?: boolean) => React.ReactNode) | undefined;
43
+ };
44
+ /**
45
+ * Custom hook that provides imperative handle for the Tree component.
46
+ */
47
+ export declare const useTreeImperativeHandle: () => {
48
+ register: ({ focusTreeFirstNode, focusTreeActiveNode }: any) => () => void;
49
+ focusFirstNode: () => void | undefined;
50
+ focusActiveNode: () => void | undefined;
51
+ };
52
+ export {};
@@ -0,0 +1,84 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ exports.__esModule = true;
5
+ exports.useTreeImperativeHandle = exports.useTreeContextProps = exports.useItemDataKeys = exports.useTreeCustomRenderer = exports.useRegisterTreeMethods = exports.TreeProvider = void 0;
6
+ var _react = require("react");
7
+ var defaultItemDataKeys = {
8
+ labelKey: 'label',
9
+ valueKey: 'value',
10
+ childrenKey: 'children',
11
+ virtualized: false
12
+ };
13
+ var TreeContext = /*#__PURE__*/(0, _react.createContext)({
14
+ props: defaultItemDataKeys
15
+ });
16
+ var TreeProvider = TreeContext.Provider;
17
+ exports.TreeProvider = TreeProvider;
18
+ var useRegisterTreeMethods = function useRegisterTreeMethods() {
19
+ var _useContext = (0, _react.useContext)(TreeContext),
20
+ register = _useContext.register;
21
+ return register;
22
+ };
23
+ exports.useRegisterTreeMethods = useRegisterTreeMethods;
24
+ var useTreeCustomRenderer = function useTreeCustomRenderer() {
25
+ var _useContext2 = (0, _react.useContext)(TreeContext),
26
+ _useContext2$props = _useContext2.props,
27
+ renderTreeIcon = _useContext2$props.renderTreeIcon,
28
+ renderTreeNode = _useContext2$props.renderTreeNode;
29
+ return {
30
+ renderTreeIcon: renderTreeIcon,
31
+ renderTreeNode: renderTreeNode
32
+ };
33
+ };
34
+ exports.useTreeCustomRenderer = useTreeCustomRenderer;
35
+ var useItemDataKeys = function useItemDataKeys() {
36
+ var _useContext3 = (0, _react.useContext)(TreeContext),
37
+ _useContext3$props = _useContext3.props;
38
+ _useContext3$props = _useContext3$props === void 0 ? defaultItemDataKeys : _useContext3$props;
39
+ var labelKey = _useContext3$props.labelKey,
40
+ valueKey = _useContext3$props.valueKey,
41
+ childrenKey = _useContext3$props.childrenKey;
42
+ return {
43
+ labelKey: labelKey,
44
+ valueKey: valueKey,
45
+ childrenKey: childrenKey
46
+ };
47
+ };
48
+ exports.useItemDataKeys = useItemDataKeys;
49
+ var useTreeContextProps = function useTreeContextProps() {
50
+ var _useContext4 = (0, _react.useContext)(TreeContext),
51
+ props = _useContext4.props;
52
+ return props;
53
+ };
54
+
55
+ /**
56
+ * Custom hook that provides imperative handle for the Tree component.
57
+ */
58
+ exports.useTreeContextProps = useTreeContextProps;
59
+ var useTreeImperativeHandle = function useTreeImperativeHandle() {
60
+ var focusFirstNodeRef = (0, _react.useRef)(null);
61
+ var focusActiveNodeRef = (0, _react.useRef)(null);
62
+ var register = (0, _react.useCallback)(function (_ref) {
63
+ var focusTreeFirstNode = _ref.focusTreeFirstNode,
64
+ focusTreeActiveNode = _ref.focusTreeActiveNode;
65
+ focusFirstNodeRef.current = focusTreeFirstNode;
66
+ focusActiveNodeRef.current = focusTreeActiveNode;
67
+ return function () {
68
+ focusFirstNodeRef.current = null;
69
+ focusActiveNodeRef.current = null;
70
+ };
71
+ }, []);
72
+ return {
73
+ register: register,
74
+ focusFirstNode: function focusFirstNode() {
75
+ var _focusFirstNodeRef$cu;
76
+ return (_focusFirstNodeRef$cu = focusFirstNodeRef.current) === null || _focusFirstNodeRef$cu === void 0 ? void 0 : _focusFirstNodeRef$cu.call(focusFirstNodeRef);
77
+ },
78
+ focusActiveNode: function focusActiveNode() {
79
+ var _focusActiveNodeRef$c;
80
+ return (_focusActiveNodeRef$c = focusActiveNodeRef.current) === null || _focusActiveNodeRef$c === void 0 ? void 0 : _focusActiveNodeRef$c.call(focusActiveNodeRef);
81
+ }
82
+ };
83
+ };
84
+ exports.useTreeImperativeHandle = useTreeImperativeHandle;