rsuite 5.60.2 → 5.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) hide show
  1. package/Accordion/styles/index.css +4 -4
  2. package/AutoComplete/styles/index.css +58 -22
  3. package/Button/styles/index.css +12 -8
  4. package/Button/styles/mixin.less +1 -1
  5. package/CHANGELOG.md +25 -0
  6. package/Calendar/styles/index.css +16 -15
  7. package/CascadeTree/styles/index.css +11 -9
  8. package/CascadeTree/styles/index.less +7 -0
  9. package/CascadeTree/styles/search.less +0 -10
  10. package/Cascader/styles/index.css +60 -31
  11. package/CheckPicker/styles/index.css +59 -27
  12. package/CheckPicker/styles/index.less +3 -3
  13. package/CheckTree/styles/index.css +160 -134
  14. package/CheckTree/styles/index.less +141 -1
  15. package/CheckTreePicker/styles/index.css +170 -126
  16. package/CheckTreePicker/styles/index.less +8 -181
  17. package/Checkbox/styles/index.css +7 -8
  18. package/Checkbox/styles/index.less +1 -5
  19. package/DateInput/styles/index.css +4 -4
  20. package/DatePicker/styles/index.css +62 -26
  21. package/DateRangeInput/styles/index.css +4 -4
  22. package/DateRangePicker/styles/index.css +67 -26
  23. package/DateRangePicker/styles/index.less +2 -0
  24. package/Dropdown/styles/index.css +14 -13
  25. package/Highlight/package.json +7 -0
  26. package/Highlight/styles/index.css +8 -0
  27. package/Highlight/styles/index.less +6 -0
  28. package/IconButton/styles/index.css +11 -10
  29. package/Input/styles/index.css +4 -4
  30. package/InputGroup/styles/index.css +18 -17
  31. package/InputGroup/styles/index.less +1 -1
  32. package/InputNumber/styles/index.css +19 -18
  33. package/InputPicker/styles/index.css +58 -22
  34. package/MultiCascadeTree/styles/index.css +61 -36
  35. package/MultiCascadeTree/styles/index.less +1 -1
  36. package/MultiCascader/styles/index.css +704 -679
  37. package/MultiCascader/styles/index.less +0 -1
  38. package/Nav/styles/index.css +15 -14
  39. package/Navbar/styles/index.css +14 -13
  40. package/Pagination/styles/index.css +62 -26
  41. package/Panel/styles/index.css +4 -4
  42. package/Placeholder/styles/index.css +2 -3
  43. package/Placeholder/styles/index.less +2 -3
  44. package/README.md +21 -39
  45. package/Radio/styles/index.css +7 -7
  46. package/Radio/styles/index.less +1 -5
  47. package/RangeSlider/styles/index.css +1 -1
  48. package/Rate/styles/index.css +1 -1
  49. package/Rate/styles/index.less +1 -1
  50. package/SelectPicker/styles/index.css +58 -22
  51. package/Slider/styles/index.css +1 -1
  52. package/Slider/styles/index.less +1 -1
  53. package/Steps/styles/index.css +6 -1
  54. package/Steps/styles/index.less +2 -1
  55. package/Tabs/styles/index.css +15 -14
  56. package/TagInput/styles/index.css +59 -27
  57. package/TagPicker/styles/index.css +59 -27
  58. package/Toggle/styles/index.css +10 -7
  59. package/Tree/styles/indent-line.less +8 -0
  60. package/Tree/styles/index.css +140 -141
  61. package/Tree/styles/index.less +188 -1
  62. package/Tree/styles/toggle.less +36 -0
  63. package/TreePicker/styles/index.css +142 -134
  64. package/TreePicker/styles/index.less +4 -234
  65. package/Uploader/styles/index.css +12 -11
  66. package/cjs/@types/common.d.ts +41 -4
  67. package/cjs/AutoComplete/AutoComplete.js +2 -1
  68. package/cjs/CascadeTree/CascadeTree.js +8 -7
  69. package/cjs/CascadeTree/SearchView.js +7 -14
  70. package/cjs/CascadeTree/hooks/usePaths.js +4 -4
  71. package/cjs/CascadeTree/hooks/useSearch.js +2 -1
  72. package/cjs/CascadeTree/utils.d.ts +0 -11
  73. package/cjs/CascadeTree/utils.js +0 -23
  74. package/cjs/Cascader/Cascader.js +17 -16
  75. package/cjs/CheckPicker/CheckPicker.js +26 -29
  76. package/cjs/CheckTree/CheckTree.d.ts +16 -0
  77. package/cjs/CheckTree/CheckTree.js +112 -0
  78. package/cjs/CheckTree/CheckTreeNode.d.ts +72 -0
  79. package/cjs/CheckTree/CheckTreeNode.js +117 -0
  80. package/cjs/CheckTree/CheckTreeView.d.ts +70 -0
  81. package/cjs/CheckTree/CheckTreeView.js +310 -0
  82. package/cjs/CheckTree/hooks/useTreeCheckState.d.ts +10 -0
  83. package/cjs/CheckTree/hooks/useTreeCheckState.js +93 -0
  84. package/cjs/CheckTree/hooks/useTreeNodeProps.d.ts +22 -0
  85. package/cjs/CheckTree/hooks/useTreeNodeProps.js +59 -0
  86. package/cjs/CheckTree/hooks/useTreeValue.d.ts +5 -0
  87. package/cjs/CheckTree/hooks/useTreeValue.js +21 -0
  88. package/cjs/CheckTree/index.d.ts +2 -14
  89. package/cjs/CheckTree/index.js +2 -23
  90. package/cjs/CheckTree/utils.d.ts +53 -0
  91. package/cjs/{CheckTreePicker → CheckTree}/utils.js +76 -26
  92. package/cjs/CheckTreePicker/CheckTreePicker.d.ts +30 -12
  93. package/cjs/CheckTreePicker/CheckTreePicker.js +153 -603
  94. package/cjs/CheckTreePicker/hooks/useFocusState.d.ts +16 -0
  95. package/cjs/CheckTreePicker/hooks/useFocusState.js +42 -0
  96. package/cjs/DatePicker/DatePicker.d.ts +4 -0
  97. package/cjs/DatePicker/DatePicker.js +20 -5
  98. package/cjs/DatePicker/types.d.ts +0 -4
  99. package/cjs/DateRangePicker/DateRangePicker.d.ts +51 -23
  100. package/cjs/DateRangePicker/DateRangePicker.js +71 -51
  101. package/cjs/DateRangePicker/hooks/useDateDisabled.d.ts +16 -0
  102. package/cjs/DateRangePicker/hooks/useDateDisabled.js +31 -0
  103. package/cjs/DateRangePicker/types.d.ts +1 -0
  104. package/cjs/Highlight/Highlight.d.ts +14 -0
  105. package/cjs/Highlight/Highlight.js +58 -0
  106. package/cjs/Highlight/index.d.ts +3 -0
  107. package/cjs/Highlight/index.js +9 -0
  108. package/cjs/Highlight/utils/highlightText.d.ts +5 -0
  109. package/cjs/Highlight/utils/highlightText.js +29 -0
  110. package/cjs/InputPicker/InputPicker.js +37 -41
  111. package/cjs/MultiCascadeTree/SearchView.js +6 -14
  112. package/cjs/MultiCascadeTree/hooks/useCascadeValue.js +15 -1
  113. package/cjs/MultiCascadeTree/hooks/useColumnData.js +2 -2
  114. package/cjs/MultiCascadeTree/hooks/useFlattenData.js +3 -3
  115. package/cjs/MultiCascadeTree/hooks/useSearch.js +2 -1
  116. package/cjs/MultiCascadeTree/utils.d.ts +4 -4
  117. package/cjs/MultiCascadeTree/utils.js +20 -11
  118. package/cjs/MultiCascader/MultiCascader.js +12 -12
  119. package/cjs/SelectPicker/SelectPicker.js +2 -6
  120. package/cjs/Tree/IndentLine.d.ts +3 -0
  121. package/cjs/Tree/IndentLine.js +18 -0
  122. package/cjs/Tree/Tree.d.ts +4 -92
  123. package/cjs/Tree/Tree.js +79 -20
  124. package/cjs/Tree/TreeNode.d.ts +101 -0
  125. package/cjs/Tree/TreeNode.js +147 -0
  126. package/cjs/Tree/TreeNodeToggle.d.ts +9 -0
  127. package/cjs/Tree/TreeNodeToggle.js +56 -0
  128. package/cjs/Tree/TreeProvider.d.ts +52 -0
  129. package/cjs/Tree/TreeProvider.js +84 -0
  130. package/cjs/Tree/TreeView.d.ts +68 -0
  131. package/cjs/Tree/TreeView.js +305 -0
  132. package/cjs/Tree/hooks/useExpandTree.d.ts +60 -0
  133. package/cjs/Tree/hooks/useExpandTree.js +77 -0
  134. package/cjs/Tree/hooks/useFlattenTree.d.ts +42 -0
  135. package/cjs/Tree/hooks/useFlattenTree.js +98 -0
  136. package/cjs/Tree/hooks/useFocusTree.d.ts +24 -0
  137. package/cjs/Tree/hooks/useFocusTree.js +158 -0
  138. package/cjs/Tree/hooks/useForceUpdate.d.ts +2 -0
  139. package/cjs/Tree/hooks/useForceUpdate.js +16 -0
  140. package/cjs/Tree/hooks/useTreeDrag.d.ts +32 -0
  141. package/cjs/Tree/hooks/useTreeDrag.js +268 -0
  142. package/cjs/Tree/hooks/useTreeNodeProps.d.ts +29 -0
  143. package/cjs/Tree/hooks/useTreeNodeProps.js +83 -0
  144. package/cjs/Tree/hooks/useTreeNodeRefs.d.ts +6 -0
  145. package/cjs/Tree/hooks/useTreeNodeRefs.js +22 -0
  146. package/cjs/Tree/hooks/useTreeSearch.d.ts +18 -0
  147. package/cjs/Tree/hooks/useTreeSearch.js +74 -0
  148. package/cjs/Tree/hooks/useTreeWithChildren.d.ts +14 -0
  149. package/cjs/Tree/hooks/useTreeWithChildren.js +64 -0
  150. package/cjs/Tree/hooks/useVirtualizedTreeData.d.ts +7 -0
  151. package/cjs/Tree/hooks/useVirtualizedTreeData.js +82 -0
  152. package/cjs/Tree/types.d.ts +257 -0
  153. package/cjs/Tree/types.js +33 -0
  154. package/cjs/Tree/utils/flattenTree.d.ts +25 -0
  155. package/cjs/Tree/utils/flattenTree.js +95 -0
  156. package/cjs/Tree/utils/focusableTree.d.ts +55 -0
  157. package/cjs/Tree/utils/focusableTree.js +157 -0
  158. package/cjs/Tree/utils/formatNodeRefKey.d.ts +4 -0
  159. package/cjs/Tree/utils/formatNodeRefKey.js +11 -0
  160. package/cjs/Tree/utils/getExpandItemValues.d.ts +11 -0
  161. package/cjs/Tree/utils/getExpandItemValues.js +21 -0
  162. package/cjs/Tree/utils/getNodeParentKeys.d.ts +5 -0
  163. package/cjs/Tree/utils/getNodeParentKeys.js +21 -0
  164. package/cjs/Tree/utils/getTreeActiveNode.d.ts +5 -0
  165. package/cjs/Tree/utils/getTreeActiveNode.js +21 -0
  166. package/cjs/Tree/utils/hasVisibleChildren.d.ts +5 -0
  167. package/cjs/Tree/utils/hasVisibleChildren.js +16 -0
  168. package/cjs/Tree/utils/indentTreeNode.d.ts +3 -0
  169. package/cjs/Tree/utils/indentTreeNode.js +18 -0
  170. package/cjs/Tree/utils/index.d.ts +11 -0
  171. package/cjs/Tree/utils/index.js +35 -0
  172. package/cjs/Tree/utils/isExpand.d.ts +6 -0
  173. package/cjs/Tree/utils/isExpand.js +14 -0
  174. package/cjs/Tree/utils/isSearching.d.ts +1 -0
  175. package/cjs/Tree/utils/isSearching.js +10 -0
  176. package/cjs/Tree/utils/treeKeyboardInteractions.d.ts +21 -0
  177. package/cjs/Tree/utils/treeKeyboardInteractions.js +49 -0
  178. package/cjs/TreePicker/TreePicker.d.ts +27 -21
  179. package/cjs/TreePicker/TreePicker.js +155 -575
  180. package/cjs/TreePicker/hooks/useFocusState.d.ts +20 -0
  181. package/cjs/TreePicker/hooks/useFocusState.js +53 -0
  182. package/cjs/index.d.ts +2 -0
  183. package/cjs/index.js +3 -1
  184. package/cjs/internals/Picker/Listbox.d.ts +40 -10
  185. package/cjs/internals/Picker/Listbox.js +21 -16
  186. package/cjs/internals/Picker/PickerIndicator.d.ts +2 -1
  187. package/cjs/internals/Picker/PickerIndicator.js +7 -3
  188. package/cjs/internals/Picker/hooks/useFocusItemValue.js +4 -4
  189. package/cjs/internals/Picker/hooks/usePickerRef.d.ts +1 -4
  190. package/cjs/internals/Picker/hooks/usePickerRef.js +3 -20
  191. package/cjs/internals/Picker/index.d.ts +0 -1
  192. package/cjs/internals/Picker/index.js +1 -4
  193. package/cjs/internals/Picker/utils.js +12 -12
  194. package/cjs/internals/{Picker → Tree}/TreeView.js +1 -1
  195. package/cjs/internals/Tree/index.d.ts +1 -0
  196. package/cjs/internals/Tree/index.js +8 -0
  197. package/cjs/internals/Tree/utils/filterNodesOfTree.d.ts +5 -0
  198. package/cjs/internals/Tree/utils/filterNodesOfTree.js +31 -0
  199. package/cjs/internals/Tree/utils/findNodeOfTree.d.ts +1 -0
  200. package/cjs/internals/Tree/utils/findNodeOfTree.js +26 -0
  201. package/cjs/internals/Tree/utils/getParentMap.d.ts +15 -0
  202. package/cjs/internals/Tree/utils/getParentMap.js +52 -0
  203. package/cjs/internals/Tree/utils/getPathTowardsItem.d.ts +4 -0
  204. package/cjs/internals/Tree/utils/getPathTowardsItem.js +16 -0
  205. package/cjs/internals/Tree/utils/index.d.ts +4 -0
  206. package/cjs/internals/Tree/utils/index.js +14 -0
  207. package/cjs/internals/Windowing/List.d.ts +1 -0
  208. package/cjs/internals/Windowing/List.js +5 -1
  209. package/cjs/internals/Windowing/index.d.ts +1 -1
  210. package/cjs/internals/Windowing/index.js +4 -2
  211. package/cjs/internals/hooks/index.d.ts +1 -0
  212. package/cjs/internals/hooks/index.js +8 -0
  213. package/cjs/internals/hooks/useFoucsVirtualListItem.d.ts +7 -0
  214. package/cjs/internals/hooks/useFoucsVirtualListItem.js +26 -0
  215. package/cjs/{utils → internals/utils}/getSafeRegExpString.d.ts +1 -1
  216. package/cjs/{utils → internals/utils}/getSafeRegExpString.js +1 -1
  217. package/cjs/internals/utils/index.d.ts +2 -0
  218. package/cjs/internals/utils/index.js +9 -0
  219. package/cjs/internals/utils/stringifyReactNode.d.ts +2 -0
  220. package/cjs/internals/utils/stringifyReactNode.js +17 -0
  221. package/cjs/utils/constants.d.ts +0 -2
  222. package/cjs/utils/constants.js +1 -6
  223. package/cjs/utils/getDataGroupBy.js +3 -3
  224. package/cjs/utils/index.d.ts +0 -3
  225. package/cjs/utils/index.js +1 -10
  226. package/cjs/utils/useIsomorphicLayoutEffect.d.ts +2 -2
  227. package/dist/rsuite-no-reset-rtl.css +292 -300
  228. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  229. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  230. package/dist/rsuite-no-reset.css +294 -304
  231. package/dist/rsuite-no-reset.min.css +1 -1
  232. package/dist/rsuite-no-reset.min.css.map +1 -1
  233. package/dist/rsuite-rtl.css +293 -301
  234. package/dist/rsuite-rtl.min.css +1 -1
  235. package/dist/rsuite-rtl.min.css.map +1 -1
  236. package/dist/rsuite.css +295 -305
  237. package/dist/rsuite.js +611 -116
  238. package/dist/rsuite.js.map +1 -1
  239. package/dist/rsuite.min.css +1 -1
  240. package/dist/rsuite.min.css.map +1 -1
  241. package/dist/rsuite.min.js +1 -1
  242. package/dist/rsuite.min.js.map +1 -1
  243. package/esm/@types/common.d.ts +41 -4
  244. package/esm/AutoComplete/AutoComplete.js +2 -1
  245. package/esm/CascadeTree/CascadeTree.js +2 -1
  246. package/esm/CascadeTree/SearchView.js +6 -13
  247. package/esm/CascadeTree/hooks/usePaths.js +1 -1
  248. package/esm/CascadeTree/hooks/useSearch.js +2 -1
  249. package/esm/CascadeTree/utils.d.ts +0 -11
  250. package/esm/CascadeTree/utils.js +0 -22
  251. package/esm/Cascader/Cascader.js +2 -1
  252. package/esm/CheckPicker/CheckPicker.js +4 -7
  253. package/esm/CheckTree/CheckTree.d.ts +16 -0
  254. package/esm/CheckTree/CheckTree.js +105 -0
  255. package/esm/CheckTree/CheckTreeNode.d.ts +72 -0
  256. package/esm/CheckTree/CheckTreeNode.js +110 -0
  257. package/esm/CheckTree/CheckTreeView.d.ts +70 -0
  258. package/esm/CheckTree/CheckTreeView.js +304 -0
  259. package/esm/CheckTree/hooks/useTreeCheckState.d.ts +10 -0
  260. package/esm/CheckTree/hooks/useTreeCheckState.js +87 -0
  261. package/esm/CheckTree/hooks/useTreeNodeProps.d.ts +22 -0
  262. package/esm/CheckTree/hooks/useTreeNodeProps.js +52 -0
  263. package/esm/CheckTree/hooks/useTreeValue.d.ts +5 -0
  264. package/esm/CheckTree/hooks/useTreeValue.js +16 -0
  265. package/esm/CheckTree/index.d.ts +2 -14
  266. package/esm/CheckTree/index.js +1 -21
  267. package/esm/CheckTree/utils.d.ts +53 -0
  268. package/esm/{CheckTreePicker → CheckTree}/utils.js +72 -22
  269. package/esm/CheckTreePicker/CheckTreePicker.d.ts +30 -12
  270. package/esm/CheckTreePicker/CheckTreePicker.js +156 -607
  271. package/esm/CheckTreePicker/hooks/useFocusState.d.ts +16 -0
  272. package/esm/CheckTreePicker/hooks/useFocusState.js +37 -0
  273. package/esm/DatePicker/DatePicker.d.ts +4 -0
  274. package/esm/DatePicker/DatePicker.js +20 -5
  275. package/esm/DatePicker/types.d.ts +0 -4
  276. package/esm/DateRangePicker/DateRangePicker.d.ts +51 -23
  277. package/esm/DateRangePicker/DateRangePicker.js +71 -51
  278. package/esm/DateRangePicker/hooks/useDateDisabled.d.ts +16 -0
  279. package/esm/DateRangePicker/hooks/useDateDisabled.js +26 -0
  280. package/esm/DateRangePicker/types.d.ts +1 -0
  281. package/esm/Highlight/Highlight.d.ts +14 -0
  282. package/esm/Highlight/Highlight.js +52 -0
  283. package/esm/Highlight/index.d.ts +3 -0
  284. package/esm/Highlight/index.js +3 -0
  285. package/esm/Highlight/utils/highlightText.d.ts +5 -0
  286. package/esm/Highlight/utils/highlightText.js +25 -0
  287. package/esm/InputPicker/InputPicker.js +3 -7
  288. package/esm/MultiCascadeTree/SearchView.js +6 -14
  289. package/esm/MultiCascadeTree/hooks/useCascadeValue.js +15 -1
  290. package/esm/MultiCascadeTree/hooks/useColumnData.js +1 -1
  291. package/esm/MultiCascadeTree/hooks/useFlattenData.js +1 -1
  292. package/esm/MultiCascadeTree/hooks/useSearch.js +2 -1
  293. package/esm/MultiCascadeTree/utils.d.ts +4 -4
  294. package/esm/MultiCascadeTree/utils.js +18 -9
  295. package/esm/MultiCascader/MultiCascader.js +1 -1
  296. package/esm/SelectPicker/SelectPicker.js +2 -6
  297. package/esm/Tree/IndentLine.d.ts +3 -0
  298. package/esm/Tree/IndentLine.js +12 -0
  299. package/esm/Tree/Tree.d.ts +4 -92
  300. package/esm/Tree/Tree.js +78 -18
  301. package/esm/Tree/TreeNode.d.ts +101 -0
  302. package/esm/Tree/TreeNode.js +141 -0
  303. package/esm/Tree/TreeNodeToggle.d.ts +9 -0
  304. package/esm/Tree/TreeNodeToggle.js +50 -0
  305. package/esm/Tree/TreeProvider.d.ts +52 -0
  306. package/esm/Tree/TreeProvider.js +74 -0
  307. package/esm/Tree/TreeView.d.ts +68 -0
  308. package/esm/Tree/TreeView.js +299 -0
  309. package/esm/Tree/hooks/useExpandTree.d.ts +60 -0
  310. package/esm/Tree/hooks/useExpandTree.js +70 -0
  311. package/esm/Tree/hooks/useFlattenTree.d.ts +42 -0
  312. package/esm/Tree/hooks/useFlattenTree.js +92 -0
  313. package/esm/Tree/hooks/useFocusTree.d.ts +24 -0
  314. package/esm/Tree/hooks/useFocusTree.js +153 -0
  315. package/esm/Tree/hooks/useForceUpdate.d.ts +2 -0
  316. package/esm/Tree/hooks/useForceUpdate.js +11 -0
  317. package/esm/Tree/hooks/useTreeDrag.d.ts +32 -0
  318. package/esm/Tree/hooks/useTreeDrag.js +264 -0
  319. package/esm/Tree/hooks/useTreeNodeProps.d.ts +29 -0
  320. package/esm/Tree/hooks/useTreeNodeProps.js +76 -0
  321. package/esm/Tree/hooks/useTreeNodeRefs.d.ts +6 -0
  322. package/esm/Tree/hooks/useTreeNodeRefs.js +18 -0
  323. package/esm/Tree/hooks/useTreeSearch.d.ts +18 -0
  324. package/esm/Tree/hooks/useTreeSearch.js +69 -0
  325. package/esm/Tree/hooks/useTreeWithChildren.d.ts +14 -0
  326. package/esm/Tree/hooks/useTreeWithChildren.js +59 -0
  327. package/esm/Tree/hooks/useVirtualizedTreeData.d.ts +7 -0
  328. package/esm/Tree/hooks/useVirtualizedTreeData.js +77 -0
  329. package/esm/Tree/types.d.ts +257 -0
  330. package/esm/Tree/types.js +30 -0
  331. package/esm/Tree/utils/flattenTree.d.ts +25 -0
  332. package/esm/Tree/utils/flattenTree.js +88 -0
  333. package/esm/Tree/utils/focusableTree.d.ts +55 -0
  334. package/esm/Tree/utils/focusableTree.js +146 -0
  335. package/esm/Tree/utils/formatNodeRefKey.d.ts +4 -0
  336. package/esm/Tree/utils/formatNodeRefKey.js +7 -0
  337. package/esm/Tree/utils/getExpandItemValues.d.ts +11 -0
  338. package/esm/Tree/utils/getExpandItemValues.js +17 -0
  339. package/esm/Tree/utils/getNodeParentKeys.d.ts +5 -0
  340. package/esm/Tree/utils/getNodeParentKeys.js +17 -0
  341. package/esm/Tree/utils/getTreeActiveNode.d.ts +5 -0
  342. package/esm/Tree/utils/getTreeActiveNode.js +16 -0
  343. package/esm/Tree/utils/hasVisibleChildren.d.ts +5 -0
  344. package/esm/Tree/utils/hasVisibleChildren.js +12 -0
  345. package/esm/Tree/utils/indentTreeNode.d.ts +3 -0
  346. package/esm/Tree/utils/indentTreeNode.js +14 -0
  347. package/esm/Tree/utils/index.d.ts +11 -0
  348. package/esm/Tree/utils/index.js +14 -0
  349. package/esm/Tree/utils/isExpand.d.ts +6 -0
  350. package/esm/Tree/utils/isExpand.js +11 -0
  351. package/esm/Tree/utils/isSearching.d.ts +1 -0
  352. package/esm/Tree/utils/isSearching.js +5 -0
  353. package/esm/Tree/utils/treeKeyboardInteractions.d.ts +21 -0
  354. package/esm/Tree/utils/treeKeyboardInteractions.js +43 -0
  355. package/esm/TreePicker/TreePicker.d.ts +27 -21
  356. package/esm/TreePicker/TreePicker.js +158 -579
  357. package/esm/TreePicker/hooks/useFocusState.d.ts +20 -0
  358. package/esm/TreePicker/hooks/useFocusState.js +48 -0
  359. package/esm/index.d.ts +2 -0
  360. package/esm/index.js +1 -0
  361. package/esm/internals/Picker/Listbox.d.ts +40 -10
  362. package/esm/internals/Picker/Listbox.js +22 -16
  363. package/esm/internals/Picker/PickerIndicator.d.ts +2 -1
  364. package/esm/internals/Picker/PickerIndicator.js +7 -3
  365. package/esm/internals/Picker/hooks/useFocusItemValue.js +1 -1
  366. package/esm/internals/Picker/hooks/usePickerRef.d.ts +1 -4
  367. package/esm/internals/Picker/hooks/usePickerRef.js +3 -20
  368. package/esm/internals/Picker/index.d.ts +0 -1
  369. package/esm/internals/Picker/index.js +0 -1
  370. package/esm/internals/Picker/utils.js +1 -1
  371. package/esm/internals/{Picker → Tree}/TreeView.js +1 -1
  372. package/esm/internals/Tree/index.d.ts +1 -0
  373. package/esm/internals/Tree/index.js +2 -0
  374. package/esm/internals/Tree/utils/filterNodesOfTree.d.ts +5 -0
  375. package/esm/internals/Tree/utils/filterNodesOfTree.js +26 -0
  376. package/esm/internals/Tree/utils/findNodeOfTree.d.ts +1 -0
  377. package/esm/internals/Tree/utils/findNodeOfTree.js +22 -0
  378. package/esm/internals/Tree/utils/getParentMap.d.ts +15 -0
  379. package/esm/internals/Tree/utils/getParentMap.js +47 -0
  380. package/esm/internals/Tree/utils/getPathTowardsItem.d.ts +4 -0
  381. package/esm/internals/Tree/utils/getPathTowardsItem.js +12 -0
  382. package/esm/internals/Tree/utils/index.d.ts +4 -0
  383. package/esm/internals/Tree/utils/index.js +5 -0
  384. package/esm/internals/Windowing/List.d.ts +1 -0
  385. package/esm/internals/Windowing/List.js +3 -0
  386. package/esm/internals/Windowing/index.d.ts +1 -1
  387. package/esm/internals/Windowing/index.js +1 -1
  388. package/esm/internals/hooks/index.d.ts +1 -0
  389. package/esm/internals/hooks/index.js +2 -0
  390. package/esm/internals/hooks/useFoucsVirtualListItem.d.ts +7 -0
  391. package/esm/internals/hooks/useFoucsVirtualListItem.js +22 -0
  392. package/esm/{utils → internals/utils}/getSafeRegExpString.d.ts +1 -1
  393. package/esm/{utils → internals/utils}/getSafeRegExpString.js +1 -1
  394. package/esm/internals/utils/index.d.ts +2 -0
  395. package/esm/internals/utils/index.js +3 -0
  396. package/esm/internals/utils/stringifyReactNode.d.ts +2 -0
  397. package/esm/internals/utils/stringifyReactNode.js +12 -0
  398. package/esm/utils/constants.d.ts +0 -2
  399. package/esm/utils/constants.js +0 -3
  400. package/esm/utils/getDataGroupBy.js +1 -1
  401. package/esm/utils/index.d.ts +0 -3
  402. package/esm/utils/index.js +0 -3
  403. package/esm/utils/useIsomorphicLayoutEffect.d.ts +2 -2
  404. package/internals/Picker/styles/index.less +27 -1
  405. package/package.json +1 -1
  406. package/styles/color-modes/dark.less +5 -1
  407. package/styles/color-modes/high-contrast.less +8 -2
  408. package/styles/color-modes/light.less +10 -5
  409. package/styles/index.less +1 -0
  410. package/TreePicker/styles/mixin.less +0 -7
  411. package/cjs/CheckTreePicker/CheckTreeNode.d.ts +0 -28
  412. package/cjs/CheckTreePicker/CheckTreeNode.js +0 -140
  413. package/cjs/CheckTreePicker/utils.d.ts +0 -44
  414. package/cjs/Tree/TreeContext.d.ts +0 -6
  415. package/cjs/Tree/TreeContext.js +0 -10
  416. package/cjs/TreePicker/TreeNode.d.ts +0 -36
  417. package/cjs/TreePicker/TreeNode.js +0 -174
  418. package/cjs/utils/appendTooltip.d.ts +0 -10
  419. package/cjs/utils/appendTooltip.js +0 -20
  420. package/cjs/utils/stringToObject.d.ts +0 -2
  421. package/cjs/utils/stringToObject.js +0 -19
  422. package/cjs/utils/treeUtils.d.ts +0 -304
  423. package/cjs/utils/treeUtils.js +0 -1095
  424. package/esm/CheckTreePicker/CheckTreeNode.d.ts +0 -28
  425. package/esm/CheckTreePicker/CheckTreeNode.js +0 -133
  426. package/esm/CheckTreePicker/utils.d.ts +0 -44
  427. package/esm/Tree/TreeContext.d.ts +0 -6
  428. package/esm/Tree/TreeContext.js +0 -4
  429. package/esm/TreePicker/TreeNode.d.ts +0 -36
  430. package/esm/TreePicker/TreeNode.js +0 -167
  431. package/esm/utils/appendTooltip.d.ts +0 -10
  432. package/esm/utils/appendTooltip.js +0 -15
  433. package/esm/utils/stringToObject.d.ts +0 -2
  434. package/esm/utils/stringToObject.js +0 -14
  435. package/esm/utils/treeUtils.d.ts +0 -304
  436. package/esm/utils/treeUtils.js +0 -1043
  437. /package/cjs/internals/{Picker → Tree}/TreeView.d.ts +0 -0
  438. /package/esm/internals/{Picker → Tree}/TreeView.d.ts +0 -0
@@ -0,0 +1,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;
@@ -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,305 @@
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 _isNil = _interopRequireDefault(require("lodash/isNil"));
12
+ var _Windowing = require("../internals/Windowing");
13
+ var _TreeNode = _interopRequireDefault(require("./TreeNode"));
14
+ var _IndentLine = _interopRequireDefault(require("./IndentLine"));
15
+ var _utils = require("../internals/Tree/utils");
16
+ var _utils2 = require("../utils");
17
+ var _utils3 = require("./utils");
18
+ var _Picker = require("../internals/Picker");
19
+ var _Tree = require("../internals/Tree");
20
+ var _useTreeSearch2 = _interopRequireDefault(require("./hooks/useTreeSearch"));
21
+ var _useTreeDrag2 = _interopRequireDefault(require("./hooks/useTreeDrag"));
22
+ var _useFocusTree2 = _interopRequireDefault(require("./hooks/useFocusTree"));
23
+ var _useVirtualizedTreeData = _interopRequireDefault(require("./hooks/useVirtualizedTreeData"));
24
+ var _useTreeNodeProps = _interopRequireDefault(require("./hooks/useTreeNodeProps"));
25
+ var _SearchBox = _interopRequireDefault(require("../internals/SearchBox"));
26
+ var _TreeProvider = require("./TreeProvider");
27
+ /**
28
+ * Props for the TreeViewInner component.
29
+ */
30
+ /**
31
+ * Represents the props for the TreeView component.
32
+ */
33
+ var TreeView = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
34
+ var _props$as = props.as,
35
+ Component = _props$as === void 0 ? 'div' : _props$as,
36
+ _props$data = props.data,
37
+ data = _props$data === void 0 ? [] : _props$data,
38
+ style = props.style,
39
+ showIndentLine = props.showIndentLine,
40
+ valueProp = props.value,
41
+ overrideLocale = props.locale,
42
+ _props$height = props.height,
43
+ height = _props$height === void 0 ? 360 : _props$height,
44
+ className = props.className,
45
+ _props$searchable = props.searchable,
46
+ searchable = _props$searchable === void 0 ? false : _props$searchable,
47
+ _props$virtualized = props.virtualized,
48
+ virtualized = _props$virtualized === void 0 ? false : _props$virtualized,
49
+ _props$classPrefix = props.classPrefix,
50
+ classPrefix = _props$classPrefix === void 0 ? 'tree' : _props$classPrefix,
51
+ searchKeyword = props.searchKeyword,
52
+ searchBy = props.searchBy,
53
+ draggable = props.draggable,
54
+ _props$disabledItemVa = props.disabledItemValues,
55
+ disabledItemValues = _props$disabledItemVa === void 0 ? [] : _props$disabledItemVa,
56
+ _props$loadingNodeVal = props.loadingNodeValues,
57
+ loadingNodeValues = _props$loadingNodeVal === void 0 ? [] : _props$loadingNodeVal,
58
+ _props$flattenedNodes = props.flattenedNodes,
59
+ flattenedNodes = _props$flattenedNodes === void 0 ? {} : _props$flattenedNodes,
60
+ listProps = props.listProps,
61
+ listRef = props.listRef,
62
+ searchInputRef = props.searchInputRef,
63
+ _props$expandItemValu = props.expandItemValues,
64
+ expandItemValues = _props$expandItemValu === void 0 ? [] : _props$expandItemValu,
65
+ onSearch = props.onSearch,
66
+ onSelect = props.onSelect,
67
+ onSelectItem = props.onSelectItem,
68
+ onChange = props.onChange,
69
+ onDragEnd = props.onDragEnd,
70
+ onDragStart = props.onDragStart,
71
+ onDragEnter = props.onDragEnter,
72
+ onDragLeave = props.onDragLeave,
73
+ onDragOver = props.onDragOver,
74
+ onDrop = props.onDrop,
75
+ onExpand = props.onExpand,
76
+ onFocusItem = props.onFocusItem,
77
+ onScroll = props.onScroll,
78
+ rest = (0, _objectWithoutPropertiesLoose2.default)(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"]);
79
+ var _useCustom = (0, _utils2.useCustom)('Picker', overrideLocale),
80
+ locale = _useCustom.locale;
81
+ var _useItemDataKeys = (0, _TreeProvider.useItemDataKeys)(),
82
+ valueKey = _useItemDataKeys.valueKey,
83
+ childrenKey = _useItemDataKeys.childrenKey;
84
+ var _useClassNames = (0, _utils2.useClassNames)(classPrefix),
85
+ prefix = _useClassNames.prefix,
86
+ merge = _useClassNames.merge,
87
+ withClassPrefix = _useClassNames.withClassPrefix;
88
+ var handleSearchCallback = (0, _utils2.useEventCallback)(function (value, _data, event) {
89
+ onSearch === null || onSearch === void 0 ? void 0 : onSearch(value, event);
90
+ });
91
+ var _useTreeSearch = (0, _useTreeSearch2.default)({
92
+ callback: handleSearchCallback,
93
+ searchKeyword: searchKeyword,
94
+ data: data,
95
+ searchBy: searchBy
96
+ }),
97
+ filteredData = _useTreeSearch.filteredData,
98
+ keyword = _useTreeSearch.keyword,
99
+ setFilteredData = _useTreeSearch.setFilteredData,
100
+ handleSearch = _useTreeSearch.handleSearch;
101
+ var transformation = (0, _useVirtualizedTreeData.default)(flattenedNodes, filteredData, {
102
+ expandItemValues: expandItemValues,
103
+ searchKeyword: keyword
104
+ });
105
+ var getFormattedNodes = function getFormattedNodes(render) {
106
+ if (virtualized) {
107
+ return transformation().filter(function (n) {
108
+ return n.visible;
109
+ });
110
+ }
111
+ return filteredData.map(function (dataItem, index) {
112
+ return render === null || render === void 0 ? void 0 : render(dataItem, index, 1);
113
+ }).filter(function (n) {
114
+ return n;
115
+ });
116
+ };
117
+ (0, _react.useEffect)(function () {
118
+ setFilteredData(data, keyword);
119
+ }, [data, keyword, setFilteredData]);
120
+
121
+ // TODO-Doma
122
+ // Replace `getKeyParentMap` with `getParentMap`
123
+ var itemParentMap = (0, _react.useMemo)(function () {
124
+ return (0, _utils.getKeyParentMap)(data, function (node) {
125
+ return node[valueKey];
126
+ }, function (node) {
127
+ return node[childrenKey];
128
+ });
129
+ }, [childrenKey, data, valueKey]);
130
+ var _useFocusTree = (0, _useFocusTree2.default)({
131
+ filteredData: filteredData,
132
+ disabledItemValues: disabledItemValues,
133
+ expandItemValues: expandItemValues,
134
+ searchKeyword: keyword,
135
+ flattenedNodes: flattenedNodes,
136
+ onFocused: onFocusItem,
137
+ onExpand: onExpand
138
+ }),
139
+ focusItemValue = _useFocusTree.focusItemValue,
140
+ setFocusItemValue = _useFocusTree.setFocusItemValue,
141
+ onTreeKeydown = _useFocusTree.onTreeKeydown,
142
+ treeNodesRefs = _useFocusTree.treeNodesRefs,
143
+ saveTreeNodeRef = _useFocusTree.saveTreeNodeRef,
144
+ treeViewRef = _useFocusTree.treeViewRef;
145
+ var _useTreeDrag = (0, _useTreeDrag2.default)({
146
+ flattenedNodes: flattenedNodes,
147
+ treeNodesRefs: treeNodesRefs,
148
+ draggable: draggable,
149
+ onDragStart: onDragStart,
150
+ onDragEnter: onDragEnter,
151
+ onDragOver: onDragOver,
152
+ onDragLeave: onDragLeave,
153
+ onDragEnd: onDragEnd,
154
+ onDrop: onDrop,
155
+ prefix: prefix
156
+ }),
157
+ dragNode = _useTreeDrag.dragNode,
158
+ dragOverNodeKey = _useTreeDrag.dragOverNodeKey,
159
+ dropNodePosition = _useTreeDrag.dropNodePosition,
160
+ dragEvents = _useTreeDrag.dragEvents;
161
+ var getTreeNodeProps = (0, _useTreeNodeProps.default)({
162
+ value: valueProp,
163
+ disabledItemValues: disabledItemValues,
164
+ loadingNodeValues: loadingNodeValues,
165
+ focusItemValue: focusItemValue,
166
+ keyword: keyword,
167
+ dragNode: dragNode,
168
+ dragOverNodeKey: dragOverNodeKey,
169
+ dropNodePosition: dropNodePosition
170
+ });
171
+ var handleSelect = (0, _utils2.useEventCallback)(function (nodeData, event) {
172
+ if (!nodeData) {
173
+ return;
174
+ }
175
+ var nextValue = nodeData[valueKey];
176
+ var path = (0, _utils.getPathTowardsItem)(nodeData, function (item) {
177
+ return itemParentMap.get(item[valueKey]);
178
+ });
179
+ setFocusItemValue(nextValue);
180
+ onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
181
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(nodeData, nextValue, event);
182
+ onSelectItem === null || onSelectItem === void 0 ? void 0 : onSelectItem(nodeData, path);
183
+ });
184
+ var selectActiveItem = (0, _utils2.useEventCallback)(function (event) {
185
+ if ((0, _isNil.default)(focusItemValue)) return;
186
+ var activeItem = (0, _utils3.getActiveItem)(focusItemValue, flattenedNodes, valueKey);
187
+ handleSelect(activeItem, event);
188
+ });
189
+ var handleTreeKeyDown = (0, _utils2.useEventCallback)(function (event) {
190
+ onTreeKeydown(event);
191
+ (0, _Picker.onMenuKeyDown)(event, {
192
+ enter: selectActiveItem
193
+ });
194
+ });
195
+ var renderNode = function renderNode(node, index, layer) {
196
+ var visible = node.visible;
197
+ if (!visible) {
198
+ return null;
199
+ }
200
+ var children = node[childrenKey];
201
+ var expanded = (0, _utils3.isExpand)(keyword, expandItemValues.includes(node[valueKey]));
202
+ var hasChildren = keyword ? (0, _utils3.hasVisibleChildren)(node, childrenKey) : Boolean(children);
203
+ var nodeProps = (0, _extends2.default)({}, getTreeNodeProps(node, layer, index), dragEvents, {
204
+ expanded: expanded,
205
+ draggable: draggable,
206
+ onExpand: onExpand,
207
+ onSelect: handleSelect,
208
+ hasChildren: hasChildren
209
+ });
210
+ if (hasChildren) {
211
+ var _merge;
212
+ layer += 1;
213
+ var childClassName = merge(prefix('node-children'), (_merge = {}, _merge[prefix('node-expanded')] = expanded, _merge));
214
+ return /*#__PURE__*/_react.default.createElement("div", {
215
+ className: childClassName,
216
+ key: node[valueKey]
217
+ }, /*#__PURE__*/_react.default.createElement(_TreeNode.default, (0, _extends2.default)({}, nodeProps, {
218
+ ref: function ref(_ref) {
219
+ return saveTreeNodeRef(_ref, node.refKey);
220
+ }
221
+ })), /*#__PURE__*/_react.default.createElement("div", {
222
+ className: prefix('group'),
223
+ role: "group"
224
+ }, children === null || children === void 0 ? void 0 : children.map(function (child, i) {
225
+ return renderNode(child, i, layer);
226
+ }), showIndentLine && /*#__PURE__*/_react.default.createElement(_IndentLine.default, null)));
227
+ }
228
+ return /*#__PURE__*/_react.default.createElement(_TreeNode.default, (0, _extends2.default)({
229
+ ref: function ref(_ref2) {
230
+ return saveTreeNodeRef(_ref2, node.refKey);
231
+ },
232
+ key: node[valueKey]
233
+ }, nodeProps));
234
+ };
235
+ var renderVirtualListNode = function renderVirtualListNode(_ref3) {
236
+ var index = _ref3.index,
237
+ style = _ref3.style,
238
+ data = _ref3.data;
239
+ var node = data[index];
240
+ var layer = node.layer,
241
+ visible = node.visible,
242
+ hasChildren = node.hasChildren;
243
+ var expanded = (0, _utils3.isExpand)(keyword, expandItemValues.includes(node[valueKey]));
244
+ if (!visible) {
245
+ return null;
246
+ }
247
+ var treeNodeProps = (0, _extends2.default)({}, getTreeNodeProps(node, layer), dragEvents, {
248
+ expanded: expanded,
249
+ style: style,
250
+ onExpand: onExpand,
251
+ onSelect: handleSelect,
252
+ hasChildren: hasChildren
253
+ });
254
+ return visible && /*#__PURE__*/_react.default.createElement(_TreeNode.default, (0, _extends2.default)({
255
+ ref: function ref(_ref4) {
256
+ return saveTreeNodeRef(_ref4, node.refKey);
257
+ }
258
+ }, treeNodeProps));
259
+ };
260
+ var classes = merge(withClassPrefix({
261
+ virtualized: virtualized
262
+ }), className);
263
+ var formattedNodes = getFormattedNodes(renderNode);
264
+ return /*#__PURE__*/_react.default.createElement(Component, {
265
+ ref: ref,
266
+ className: classes,
267
+ style: style
268
+ }, searchable ? /*#__PURE__*/_react.default.createElement(_SearchBox.default, {
269
+ placeholder: locale.searchPlaceholder,
270
+ onChange: handleSearch,
271
+ value: keyword,
272
+ inputRef: searchInputRef
273
+ }) : null, keyword && formattedNodes.length === 0 ? /*#__PURE__*/_react.default.createElement("div", {
274
+ className: prefix('empty')
275
+ }, locale.noResultsText) : null, /*#__PURE__*/_react.default.createElement(_Tree.TreeView, (0, _extends2.default)({}, rest, {
276
+ ref: treeViewRef,
277
+ treeRootClassName: prefix('root'),
278
+ onScroll: onScroll,
279
+ onKeyDown: handleTreeKeyDown,
280
+ className: prefix('view'),
281
+ style: virtualized ? undefined : {
282
+ height: height
283
+ }
284
+ }), virtualized ? /*#__PURE__*/_react.default.createElement(_Windowing.AutoSizer, {
285
+ defaultHeight: height,
286
+ style: {
287
+ width: 'auto',
288
+ height: 'auto'
289
+ },
290
+ className: prefix('virt-auto-sizer')
291
+ }, function (_ref5) {
292
+ var height = _ref5.height;
293
+ return /*#__PURE__*/_react.default.createElement(_Windowing.List, (0, _extends2.default)({
294
+ ref: listRef,
295
+ height: height,
296
+ itemSize: _Windowing.defaultItemSize,
297
+ itemCount: formattedNodes.length,
298
+ itemData: formattedNodes,
299
+ className: prefix('virt-list')
300
+ }, listProps), renderVirtualListNode);
301
+ }) : formattedNodes));
302
+ });
303
+ TreeView.displayName = 'TreeView';
304
+ var _default = TreeView;
305
+ exports.default = _default;
@@ -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,77 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ exports.__esModule = true;
6
+ exports.getDefaultExpandItemValues = getDefaultExpandItemValues;
7
+ exports.default = void 0;
8
+ var _react = require("react");
9
+ var _isFunction = _interopRequireDefault(require("lodash/isFunction"));
10
+ var _utils = require("../../utils");
11
+ var _Picker = require("../../internals/Picker");
12
+ var _utils2 = require("../utils");
13
+ function getDefaultExpandItemValues(data, options) {
14
+ var valueKey = options.valueKey,
15
+ defaultExpandAll = options.defaultExpandAll,
16
+ childrenKey = options.childrenKey,
17
+ _options$defaultExpan = options.defaultExpandItemValues,
18
+ defaultExpandItemValues = _options$defaultExpan === void 0 ? [] : _options$defaultExpan;
19
+ if (defaultExpandAll) {
20
+ return (0, _utils2.flattenTree)(data, function (item) {
21
+ return item[childrenKey] || [];
22
+ }).filter(function (item) {
23
+ return Array.isArray(item[childrenKey]) && item[childrenKey].length > 0;
24
+ }).map(function (item) {
25
+ return item[valueKey];
26
+ });
27
+ }
28
+ return defaultExpandItemValues;
29
+ }
30
+ /**
31
+ * Custom hook for managing tree expansion state.
32
+ */
33
+ function useExpandTree(data, props) {
34
+ var defaultExpandAll = props.defaultExpandAll,
35
+ valueKey = props.valueKey,
36
+ childrenKey = props.childrenKey,
37
+ defaultExpandItemValues = props.defaultExpandItemValues,
38
+ controlledExpandItemValues = props.controlledExpandItemValues,
39
+ onExpand = props.onExpand,
40
+ getChildren = props.getChildren,
41
+ appendChild = props.appendChild;
42
+ var _useControlled = (0, _utils.useControlled)(controlledExpandItemValues, getDefaultExpandItemValues(data, {
43
+ defaultExpandAll: defaultExpandAll,
44
+ valueKey: valueKey,
45
+ childrenKey: childrenKey,
46
+ defaultExpandItemValues: defaultExpandItemValues
47
+ })),
48
+ expandItemValues = _useControlled[0],
49
+ setExpandItemValues = _useControlled[1];
50
+ (0, _react.useEffect)(function () {
51
+ if (Array.isArray(controlledExpandItemValues)) {
52
+ setExpandItemValues(controlledExpandItemValues);
53
+ }
54
+ }, [controlledExpandItemValues, setExpandItemValues]);
55
+ var handleExpandTreeNode = (0, _utils.useEventCallback)(function (node, expanded) {
56
+ var nextExpandItemValues = (0, _utils2.getExpandItemValues)({
57
+ node: node,
58
+ isExpand: !expanded,
59
+ expandItemValues: expandItemValues,
60
+ valueKey: valueKey
61
+ });
62
+ setExpandItemValues(nextExpandItemValues);
63
+ onExpand === null || onExpand === void 0 ? void 0 : onExpand(nextExpandItemValues, node, (0, _Picker.createConcatChildrenFunction)(node, node[valueKey], {
64
+ valueKey: valueKey,
65
+ childrenKey: childrenKey
66
+ }));
67
+ if ((0, _isFunction.default)(getChildren) && !node.expand && Array.isArray(node[childrenKey]) && node[childrenKey].length === 0) {
68
+ appendChild(node, getChildren);
69
+ }
70
+ });
71
+ return {
72
+ expandItemValues: expandItemValues,
73
+ handleExpandTreeNode: handleExpandTreeNode
74
+ };
75
+ }
76
+ var _default = useExpandTree;
77
+ exports.default = _default;
@@ -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;