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
@@ -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,74 @@
1
+ 'use client';
2
+ import { createContext, useContext, useRef, useCallback } from 'react';
3
+ var defaultItemDataKeys = {
4
+ labelKey: 'label',
5
+ valueKey: 'value',
6
+ childrenKey: 'children',
7
+ virtualized: false
8
+ };
9
+ var TreeContext = /*#__PURE__*/createContext({
10
+ props: defaultItemDataKeys
11
+ });
12
+ export var TreeProvider = TreeContext.Provider;
13
+ export var useRegisterTreeMethods = function useRegisterTreeMethods() {
14
+ var _useContext = useContext(TreeContext),
15
+ register = _useContext.register;
16
+ return register;
17
+ };
18
+ export var useTreeCustomRenderer = function useTreeCustomRenderer() {
19
+ var _useContext2 = useContext(TreeContext),
20
+ _useContext2$props = _useContext2.props,
21
+ renderTreeIcon = _useContext2$props.renderTreeIcon,
22
+ renderTreeNode = _useContext2$props.renderTreeNode;
23
+ return {
24
+ renderTreeIcon: renderTreeIcon,
25
+ renderTreeNode: renderTreeNode
26
+ };
27
+ };
28
+ export var useItemDataKeys = function useItemDataKeys() {
29
+ var _useContext3 = useContext(TreeContext),
30
+ _useContext3$props = _useContext3.props;
31
+ _useContext3$props = _useContext3$props === void 0 ? defaultItemDataKeys : _useContext3$props;
32
+ var labelKey = _useContext3$props.labelKey,
33
+ valueKey = _useContext3$props.valueKey,
34
+ childrenKey = _useContext3$props.childrenKey;
35
+ return {
36
+ labelKey: labelKey,
37
+ valueKey: valueKey,
38
+ childrenKey: childrenKey
39
+ };
40
+ };
41
+ export var useTreeContextProps = function useTreeContextProps() {
42
+ var _useContext4 = useContext(TreeContext),
43
+ props = _useContext4.props;
44
+ return props;
45
+ };
46
+
47
+ /**
48
+ * Custom hook that provides imperative handle for the Tree component.
49
+ */
50
+ export var useTreeImperativeHandle = function useTreeImperativeHandle() {
51
+ var focusFirstNodeRef = useRef(null);
52
+ var focusActiveNodeRef = useRef(null);
53
+ var register = useCallback(function (_ref) {
54
+ var focusTreeFirstNode = _ref.focusTreeFirstNode,
55
+ focusTreeActiveNode = _ref.focusTreeActiveNode;
56
+ focusFirstNodeRef.current = focusTreeFirstNode;
57
+ focusActiveNodeRef.current = focusTreeActiveNode;
58
+ return function () {
59
+ focusFirstNodeRef.current = null;
60
+ focusActiveNodeRef.current = null;
61
+ };
62
+ }, []);
63
+ return {
64
+ register: register,
65
+ focusFirstNode: function focusFirstNode() {
66
+ var _focusFirstNodeRef$cu;
67
+ return (_focusFirstNodeRef$cu = focusFirstNodeRef.current) === null || _focusFirstNodeRef$cu === void 0 ? void 0 : _focusFirstNodeRef$cu.call(focusFirstNodeRef);
68
+ },
69
+ focusActiveNode: function focusActiveNode() {
70
+ var _focusActiveNodeRef$c;
71
+ return (_focusActiveNodeRef$c = focusActiveNodeRef.current) === null || _focusActiveNodeRef$c === void 0 ? void 0 : _focusActiveNodeRef$c.call(focusActiveNodeRef);
72
+ }
73
+ };
74
+ };
@@ -0,0 +1,68 @@
1
+ import React from 'react';
2
+ import { type ListHandle } from '../internals/Windowing';
3
+ import { RsRefForwardingComponent, DataProps, ToArray } from '../@types/common';
4
+ import type { TreeNode, TreeNodeMap, TreeViewBaseProps, TreeDragProps } from './types';
5
+ export interface TreeViewProps<V = number | string | null> extends TreeViewBaseProps<V, TreeNode>, DataProps<TreeNode>, TreeDragProps {
6
+ /**
7
+ * Selected value.
8
+ */
9
+ value?: V;
10
+ /**
11
+ * Whether display search input box.
12
+ */
13
+ searchable?: boolean;
14
+ /**
15
+ * Whether using virtualized list.
16
+ */
17
+ virtualized?: boolean;
18
+ /**
19
+ * Disabled tree node.
20
+ */
21
+ disabledItemValues?: ToArray<NonNullable<V>>;
22
+ /**
23
+ * Virtualized list ref object.
24
+ */
25
+ listRef?: React.RefObject<ListHandle>;
26
+ /**
27
+ * Searchbox input ref object.
28
+ */
29
+ searchInputRef?: React.RefObject<HTMLInputElement>;
30
+ /**
31
+ * Called when scrolling.
32
+ */
33
+ onScroll?: (event: React.SyntheticEvent) => void;
34
+ /**
35
+ * Called after the value has been changed.
36
+ */
37
+ onChange?: (value: V, event: React.SyntheticEvent) => void;
38
+ }
39
+ /**
40
+ * Props for the TreeViewInner component.
41
+ */
42
+ /**
43
+ * Represents the props for the TreeView component.
44
+ */
45
+ interface TreeViewInnerProps<V = string | number | null> extends Omit<TreeViewProps<V>, 'onExpand'> {
46
+ /**
47
+ * An array of values representing the loading nodes.
48
+ */
49
+ loadingNodeValues?: V[];
50
+ /**
51
+ * A map of flattened nodes.
52
+ */
53
+ flattenedNodes?: TreeNodeMap;
54
+ /**
55
+ * A callback function that is called when an item in the tree receives focus.
56
+ *
57
+ * @param value - The value of the focused item.
58
+ */
59
+ onFocusItem?: (value?: V) => void;
60
+ /**
61
+ * A callback function that is called when a node is expanded.
62
+ *
63
+ * @param nodeData - The data of the expanded node.
64
+ */
65
+ onExpand?: (nodeData: TreeNode, expanded?: boolean) => void;
66
+ }
67
+ declare const TreeView: RsRefForwardingComponent<'div', TreeViewInnerProps>;
68
+ export default TreeView;
@@ -0,0 +1,299 @@
1
+ 'use client';
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
+ import React, { useEffect, useMemo } from 'react';
5
+ import isNil from 'lodash/isNil';
6
+ import { List, AutoSizer, defaultItemSize } from '../internals/Windowing';
7
+ import TreeViewNode from './TreeNode';
8
+ import IndentLine from './IndentLine';
9
+ import { getPathTowardsItem, getKeyParentMap } from '../internals/Tree/utils';
10
+ import { useClassNames, useCustom, useEventCallback } from '../utils';
11
+ import { isExpand, hasVisibleChildren, getActiveItem } from './utils';
12
+ import { onMenuKeyDown } from '../internals/Picker';
13
+ import { TreeView as BaseTreeView } from '../internals/Tree';
14
+ import useTreeSearch from './hooks/useTreeSearch';
15
+ import useTreeDrag from './hooks/useTreeDrag';
16
+ import useFocusTree from './hooks/useFocusTree';
17
+ import useVirtualizedTreeData from './hooks/useVirtualizedTreeData';
18
+ import useTreeNodeProps from './hooks/useTreeNodeProps';
19
+ import SearchBox from '../internals/SearchBox';
20
+ import { useItemDataKeys } from './TreeProvider';
21
+
22
+ /**
23
+ * Props for the TreeViewInner component.
24
+ */
25
+ /**
26
+ * Represents the props for the TreeView component.
27
+ */
28
+ var TreeView = /*#__PURE__*/React.forwardRef(function (props, ref) {
29
+ var _props$as = props.as,
30
+ Component = _props$as === void 0 ? 'div' : _props$as,
31
+ _props$data = props.data,
32
+ data = _props$data === void 0 ? [] : _props$data,
33
+ style = props.style,
34
+ showIndentLine = props.showIndentLine,
35
+ valueProp = props.value,
36
+ overrideLocale = props.locale,
37
+ _props$height = props.height,
38
+ height = _props$height === void 0 ? 360 : _props$height,
39
+ className = props.className,
40
+ _props$searchable = props.searchable,
41
+ searchable = _props$searchable === void 0 ? false : _props$searchable,
42
+ _props$virtualized = props.virtualized,
43
+ virtualized = _props$virtualized === void 0 ? false : _props$virtualized,
44
+ _props$classPrefix = props.classPrefix,
45
+ classPrefix = _props$classPrefix === void 0 ? 'tree' : _props$classPrefix,
46
+ searchKeyword = props.searchKeyword,
47
+ searchBy = props.searchBy,
48
+ draggable = props.draggable,
49
+ _props$disabledItemVa = props.disabledItemValues,
50
+ disabledItemValues = _props$disabledItemVa === void 0 ? [] : _props$disabledItemVa,
51
+ _props$loadingNodeVal = props.loadingNodeValues,
52
+ loadingNodeValues = _props$loadingNodeVal === void 0 ? [] : _props$loadingNodeVal,
53
+ _props$flattenedNodes = props.flattenedNodes,
54
+ flattenedNodes = _props$flattenedNodes === void 0 ? {} : _props$flattenedNodes,
55
+ listProps = props.listProps,
56
+ listRef = props.listRef,
57
+ searchInputRef = props.searchInputRef,
58
+ _props$expandItemValu = props.expandItemValues,
59
+ expandItemValues = _props$expandItemValu === void 0 ? [] : _props$expandItemValu,
60
+ onSearch = props.onSearch,
61
+ onSelect = props.onSelect,
62
+ onSelectItem = props.onSelectItem,
63
+ onChange = props.onChange,
64
+ onDragEnd = props.onDragEnd,
65
+ onDragStart = props.onDragStart,
66
+ onDragEnter = props.onDragEnter,
67
+ onDragLeave = props.onDragLeave,
68
+ onDragOver = props.onDragOver,
69
+ onDrop = props.onDrop,
70
+ onExpand = props.onExpand,
71
+ onFocusItem = props.onFocusItem,
72
+ onScroll = props.onScroll,
73
+ rest = _objectWithoutPropertiesLoose(props, ["as", "data", "style", "showIndentLine", "value", "locale", "height", "className", "searchable", "virtualized", "classPrefix", "searchKeyword", "searchBy", "draggable", "disabledItemValues", "loadingNodeValues", "flattenedNodes", "listProps", "listRef", "searchInputRef", "expandItemValues", "onSearch", "onSelect", "onSelectItem", "onChange", "onDragEnd", "onDragStart", "onDragEnter", "onDragLeave", "onDragOver", "onDrop", "onExpand", "onFocusItem", "onScroll"]);
74
+ var _useCustom = useCustom('Picker', overrideLocale),
75
+ locale = _useCustom.locale;
76
+ var _useItemDataKeys = useItemDataKeys(),
77
+ valueKey = _useItemDataKeys.valueKey,
78
+ childrenKey = _useItemDataKeys.childrenKey;
79
+ var _useClassNames = useClassNames(classPrefix),
80
+ prefix = _useClassNames.prefix,
81
+ merge = _useClassNames.merge,
82
+ withClassPrefix = _useClassNames.withClassPrefix;
83
+ var handleSearchCallback = useEventCallback(function (value, _data, event) {
84
+ onSearch === null || onSearch === void 0 ? void 0 : onSearch(value, event);
85
+ });
86
+ var _useTreeSearch = useTreeSearch({
87
+ callback: handleSearchCallback,
88
+ searchKeyword: searchKeyword,
89
+ data: data,
90
+ searchBy: searchBy
91
+ }),
92
+ filteredData = _useTreeSearch.filteredData,
93
+ keyword = _useTreeSearch.keyword,
94
+ setFilteredData = _useTreeSearch.setFilteredData,
95
+ handleSearch = _useTreeSearch.handleSearch;
96
+ var transformation = useVirtualizedTreeData(flattenedNodes, filteredData, {
97
+ expandItemValues: expandItemValues,
98
+ searchKeyword: keyword
99
+ });
100
+ var getFormattedNodes = function getFormattedNodes(render) {
101
+ if (virtualized) {
102
+ return transformation().filter(function (n) {
103
+ return n.visible;
104
+ });
105
+ }
106
+ return filteredData.map(function (dataItem, index) {
107
+ return render === null || render === void 0 ? void 0 : render(dataItem, index, 1);
108
+ }).filter(function (n) {
109
+ return n;
110
+ });
111
+ };
112
+ useEffect(function () {
113
+ setFilteredData(data, keyword);
114
+ }, [data, keyword, setFilteredData]);
115
+
116
+ // TODO-Doma
117
+ // Replace `getKeyParentMap` with `getParentMap`
118
+ var itemParentMap = useMemo(function () {
119
+ return getKeyParentMap(data, function (node) {
120
+ return node[valueKey];
121
+ }, function (node) {
122
+ return node[childrenKey];
123
+ });
124
+ }, [childrenKey, data, valueKey]);
125
+ var _useFocusTree = useFocusTree({
126
+ filteredData: filteredData,
127
+ disabledItemValues: disabledItemValues,
128
+ expandItemValues: expandItemValues,
129
+ searchKeyword: keyword,
130
+ flattenedNodes: flattenedNodes,
131
+ onFocused: onFocusItem,
132
+ onExpand: onExpand
133
+ }),
134
+ focusItemValue = _useFocusTree.focusItemValue,
135
+ setFocusItemValue = _useFocusTree.setFocusItemValue,
136
+ onTreeKeydown = _useFocusTree.onTreeKeydown,
137
+ treeNodesRefs = _useFocusTree.treeNodesRefs,
138
+ saveTreeNodeRef = _useFocusTree.saveTreeNodeRef,
139
+ treeViewRef = _useFocusTree.treeViewRef;
140
+ var _useTreeDrag = useTreeDrag({
141
+ flattenedNodes: flattenedNodes,
142
+ treeNodesRefs: treeNodesRefs,
143
+ draggable: draggable,
144
+ onDragStart: onDragStart,
145
+ onDragEnter: onDragEnter,
146
+ onDragOver: onDragOver,
147
+ onDragLeave: onDragLeave,
148
+ onDragEnd: onDragEnd,
149
+ onDrop: onDrop,
150
+ prefix: prefix
151
+ }),
152
+ dragNode = _useTreeDrag.dragNode,
153
+ dragOverNodeKey = _useTreeDrag.dragOverNodeKey,
154
+ dropNodePosition = _useTreeDrag.dropNodePosition,
155
+ dragEvents = _useTreeDrag.dragEvents;
156
+ var getTreeNodeProps = useTreeNodeProps({
157
+ value: valueProp,
158
+ disabledItemValues: disabledItemValues,
159
+ loadingNodeValues: loadingNodeValues,
160
+ focusItemValue: focusItemValue,
161
+ keyword: keyword,
162
+ dragNode: dragNode,
163
+ dragOverNodeKey: dragOverNodeKey,
164
+ dropNodePosition: dropNodePosition
165
+ });
166
+ var handleSelect = useEventCallback(function (nodeData, event) {
167
+ if (!nodeData) {
168
+ return;
169
+ }
170
+ var nextValue = nodeData[valueKey];
171
+ var path = getPathTowardsItem(nodeData, function (item) {
172
+ return itemParentMap.get(item[valueKey]);
173
+ });
174
+ setFocusItemValue(nextValue);
175
+ onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
176
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(nodeData, nextValue, event);
177
+ onSelectItem === null || onSelectItem === void 0 ? void 0 : onSelectItem(nodeData, path);
178
+ });
179
+ var selectActiveItem = useEventCallback(function (event) {
180
+ if (isNil(focusItemValue)) return;
181
+ var activeItem = getActiveItem(focusItemValue, flattenedNodes, valueKey);
182
+ handleSelect(activeItem, event);
183
+ });
184
+ var handleTreeKeyDown = useEventCallback(function (event) {
185
+ onTreeKeydown(event);
186
+ onMenuKeyDown(event, {
187
+ enter: selectActiveItem
188
+ });
189
+ });
190
+ var renderNode = function renderNode(node, index, layer) {
191
+ var visible = node.visible;
192
+ if (!visible) {
193
+ return null;
194
+ }
195
+ var children = node[childrenKey];
196
+ var expanded = isExpand(keyword, expandItemValues.includes(node[valueKey]));
197
+ var hasChildren = keyword ? hasVisibleChildren(node, childrenKey) : Boolean(children);
198
+ var nodeProps = _extends({}, getTreeNodeProps(node, layer, index), dragEvents, {
199
+ expanded: expanded,
200
+ draggable: draggable,
201
+ onExpand: onExpand,
202
+ onSelect: handleSelect,
203
+ hasChildren: hasChildren
204
+ });
205
+ if (hasChildren) {
206
+ var _merge;
207
+ layer += 1;
208
+ var childClassName = merge(prefix('node-children'), (_merge = {}, _merge[prefix('node-expanded')] = expanded, _merge));
209
+ return /*#__PURE__*/React.createElement("div", {
210
+ className: childClassName,
211
+ key: node[valueKey]
212
+ }, /*#__PURE__*/React.createElement(TreeViewNode, _extends({}, nodeProps, {
213
+ ref: function ref(_ref) {
214
+ return saveTreeNodeRef(_ref, node.refKey);
215
+ }
216
+ })), /*#__PURE__*/React.createElement("div", {
217
+ className: prefix('group'),
218
+ role: "group"
219
+ }, children === null || children === void 0 ? void 0 : children.map(function (child, i) {
220
+ return renderNode(child, i, layer);
221
+ }), showIndentLine && /*#__PURE__*/React.createElement(IndentLine, null)));
222
+ }
223
+ return /*#__PURE__*/React.createElement(TreeViewNode, _extends({
224
+ ref: function ref(_ref2) {
225
+ return saveTreeNodeRef(_ref2, node.refKey);
226
+ },
227
+ key: node[valueKey]
228
+ }, nodeProps));
229
+ };
230
+ var renderVirtualListNode = function renderVirtualListNode(_ref3) {
231
+ var index = _ref3.index,
232
+ style = _ref3.style,
233
+ data = _ref3.data;
234
+ var node = data[index];
235
+ var layer = node.layer,
236
+ visible = node.visible,
237
+ hasChildren = node.hasChildren;
238
+ var expanded = isExpand(keyword, expandItemValues.includes(node[valueKey]));
239
+ if (!visible) {
240
+ return null;
241
+ }
242
+ var treeNodeProps = _extends({}, getTreeNodeProps(node, layer), dragEvents, {
243
+ expanded: expanded,
244
+ style: style,
245
+ onExpand: onExpand,
246
+ onSelect: handleSelect,
247
+ hasChildren: hasChildren
248
+ });
249
+ return visible && /*#__PURE__*/React.createElement(TreeViewNode, _extends({
250
+ ref: function ref(_ref4) {
251
+ return saveTreeNodeRef(_ref4, node.refKey);
252
+ }
253
+ }, treeNodeProps));
254
+ };
255
+ var classes = merge(withClassPrefix({
256
+ virtualized: virtualized
257
+ }), className);
258
+ var formattedNodes = getFormattedNodes(renderNode);
259
+ return /*#__PURE__*/React.createElement(Component, {
260
+ ref: ref,
261
+ className: classes,
262
+ style: style
263
+ }, searchable ? /*#__PURE__*/React.createElement(SearchBox, {
264
+ placeholder: locale.searchPlaceholder,
265
+ onChange: handleSearch,
266
+ value: keyword,
267
+ inputRef: searchInputRef
268
+ }) : null, keyword && formattedNodes.length === 0 ? /*#__PURE__*/React.createElement("div", {
269
+ className: prefix('empty')
270
+ }, locale.noResultsText) : null, /*#__PURE__*/React.createElement(BaseTreeView, _extends({}, rest, {
271
+ ref: treeViewRef,
272
+ treeRootClassName: prefix('root'),
273
+ onScroll: onScroll,
274
+ onKeyDown: handleTreeKeyDown,
275
+ className: prefix('view'),
276
+ style: virtualized ? undefined : {
277
+ height: height
278
+ }
279
+ }), virtualized ? /*#__PURE__*/React.createElement(AutoSizer, {
280
+ defaultHeight: height,
281
+ style: {
282
+ width: 'auto',
283
+ height: 'auto'
284
+ },
285
+ className: prefix('virt-auto-sizer')
286
+ }, function (_ref5) {
287
+ var height = _ref5.height;
288
+ return /*#__PURE__*/React.createElement(List, _extends({
289
+ ref: listRef,
290
+ height: height,
291
+ itemSize: defaultItemSize,
292
+ itemCount: formattedNodes.length,
293
+ itemData: formattedNodes,
294
+ className: prefix('virt-list')
295
+ }, listProps), renderVirtualListNode);
296
+ }) : formattedNodes));
297
+ });
298
+ TreeView.displayName = 'TreeView';
299
+ export default TreeView;
@@ -0,0 +1,60 @@
1
+ import type { TreeNode } from '../types';
2
+ interface DefaultExpandItemValuesOptions {
3
+ valueKey: string;
4
+ defaultExpandAll: boolean;
5
+ childrenKey: string;
6
+ defaultExpandItemValues?: any[];
7
+ }
8
+ export declare function getDefaultExpandItemValues<TItem>(data: TItem[], options: DefaultExpandItemValuesOptions): any[];
9
+ interface UseExpandTreeProps<T extends TreeNode> {
10
+ /**
11
+ * Specifies whether all tree nodes should be expanded by default.
12
+ */
13
+ defaultExpandAll: boolean;
14
+ /**
15
+ * The key used to access the value of a tree node.
16
+ */
17
+ valueKey: string;
18
+ /**
19
+ * The key used to access the children of a tree node.
20
+ */
21
+ childrenKey: string;
22
+ /**
23
+ * An array of values that should be expanded by default.
24
+ */
25
+ defaultExpandItemValues: any[];
26
+ /**
27
+ * An optional array of values that control the expanded items.
28
+ */
29
+ controlledExpandItemValues?: any[];
30
+ /**
31
+ * A callback function that is called when the tree is expanded.
32
+ *
33
+ * @param expandItemValues - The expanded item values.
34
+ * @param activeNode - The active tree node.
35
+ * @param concat - A function to concatenate the data and children of a tree node.
36
+ */
37
+ onExpand?: (expandItemValues: T[], activeNode: T, concat: (data: T[], children: T[]) => T[]) => void;
38
+ /**
39
+ * A function that returns the children of a tree node.
40
+ *
41
+ * @param node - The tree node.
42
+ * @returns The children of the tree node.
43
+ */
44
+ getChildren?: (node: T) => T[] | Promise<T[]>;
45
+ /**
46
+ * A function that appends a child to a tree node.
47
+ *
48
+ * @param node - The tree node.
49
+ * @param getChildren - A function that returns the children of a tree node.
50
+ */
51
+ appendChild: (node: T, getChildren: (node: T) => T[] | Promise<T[]>) => void;
52
+ }
53
+ /**
54
+ * Custom hook for managing tree expansion state.
55
+ */
56
+ declare function useExpandTree(data: TreeNode[], props: UseExpandTreeProps<TreeNode>): {
57
+ expandItemValues: any[];
58
+ handleExpandTreeNode: (...args: any[]) => any;
59
+ };
60
+ export default useExpandTree;
@@ -0,0 +1,70 @@
1
+ 'use client';
2
+ import { useEffect } from 'react';
3
+ import isFunction from 'lodash/isFunction';
4
+ import { useControlled, useEventCallback } from '../../utils';
5
+ import { createConcatChildrenFunction } from '../../internals/Picker';
6
+ import { getExpandItemValues, flattenTree } from '../utils';
7
+ export function getDefaultExpandItemValues(data, options) {
8
+ var valueKey = options.valueKey,
9
+ defaultExpandAll = options.defaultExpandAll,
10
+ childrenKey = options.childrenKey,
11
+ _options$defaultExpan = options.defaultExpandItemValues,
12
+ defaultExpandItemValues = _options$defaultExpan === void 0 ? [] : _options$defaultExpan;
13
+ if (defaultExpandAll) {
14
+ return flattenTree(data, function (item) {
15
+ return item[childrenKey] || [];
16
+ }).filter(function (item) {
17
+ return Array.isArray(item[childrenKey]) && item[childrenKey].length > 0;
18
+ }).map(function (item) {
19
+ return item[valueKey];
20
+ });
21
+ }
22
+ return defaultExpandItemValues;
23
+ }
24
+ /**
25
+ * Custom hook for managing tree expansion state.
26
+ */
27
+ function useExpandTree(data, props) {
28
+ var defaultExpandAll = props.defaultExpandAll,
29
+ valueKey = props.valueKey,
30
+ childrenKey = props.childrenKey,
31
+ defaultExpandItemValues = props.defaultExpandItemValues,
32
+ controlledExpandItemValues = props.controlledExpandItemValues,
33
+ onExpand = props.onExpand,
34
+ getChildren = props.getChildren,
35
+ appendChild = props.appendChild;
36
+ var _useControlled = useControlled(controlledExpandItemValues, getDefaultExpandItemValues(data, {
37
+ defaultExpandAll: defaultExpandAll,
38
+ valueKey: valueKey,
39
+ childrenKey: childrenKey,
40
+ defaultExpandItemValues: defaultExpandItemValues
41
+ })),
42
+ expandItemValues = _useControlled[0],
43
+ setExpandItemValues = _useControlled[1];
44
+ useEffect(function () {
45
+ if (Array.isArray(controlledExpandItemValues)) {
46
+ setExpandItemValues(controlledExpandItemValues);
47
+ }
48
+ }, [controlledExpandItemValues, setExpandItemValues]);
49
+ var handleExpandTreeNode = useEventCallback(function (node, expanded) {
50
+ var nextExpandItemValues = getExpandItemValues({
51
+ node: node,
52
+ isExpand: !expanded,
53
+ expandItemValues: expandItemValues,
54
+ valueKey: valueKey
55
+ });
56
+ setExpandItemValues(nextExpandItemValues);
57
+ onExpand === null || onExpand === void 0 ? void 0 : onExpand(nextExpandItemValues, node, createConcatChildrenFunction(node, node[valueKey], {
58
+ valueKey: valueKey,
59
+ childrenKey: childrenKey
60
+ }));
61
+ if (isFunction(getChildren) && !node.expand && Array.isArray(node[childrenKey]) && node[childrenKey].length === 0) {
62
+ appendChild(node, getChildren);
63
+ }
64
+ });
65
+ return {
66
+ expandItemValues: expandItemValues,
67
+ handleExpandTreeNode: handleExpandTreeNode
68
+ };
69
+ }
70
+ export default useExpandTree;
@@ -0,0 +1,42 @@
1
+ import type { TreeNode, TreeNodeMap } from '../types';
2
+ interface UseFlattenTreeOptions {
3
+ /**
4
+ * The value of the tree.
5
+ */
6
+ value?: any;
7
+ /**
8
+ * Specifies whether the tree supports multiple selection.
9
+ */
10
+ multiple?: boolean;
11
+ /**
12
+ * The key used to access the label property of each tree node.
13
+ */
14
+ labelKey: string;
15
+ /**
16
+ * The key used to access the value property of each tree node.
17
+ */
18
+ valueKey: string;
19
+ /**
20
+ * The key used to access the children property of each tree node.
21
+ */
22
+ childrenKey: string;
23
+ /**
24
+ * Specifies whether the tree should cascade the selection to child nodes.
25
+ */
26
+ cascade?: boolean;
27
+ /**
28
+ * An array of item values that should not be selectable.
29
+ */
30
+ uncheckableItemValues?: any[];
31
+ /**
32
+ * A callback function that will be called when the tree nodes change.
33
+ * It receives a map of the tree nodes.
34
+ */
35
+ callback?: (nodes: TreeNodeMap) => void;
36
+ }
37
+ /**
38
+ * Custom hook that flattens a tree data structure into a map of nodes.
39
+ *
40
+ */
41
+ declare function useFlattenTree(data: TreeNode[], options: UseFlattenTreeOptions): TreeNodeMap;
42
+ export default useFlattenTree;