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,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;
@@ -0,0 +1,98 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+ var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
+ var _react = require("react");
9
+ var _omit = _interopRequireDefault(require("lodash/omit"));
10
+ var _isNil = _interopRequireDefault(require("lodash/isNil"));
11
+ var _shallowEqual = _interopRequireDefault(require("../../utils/shallowEqual"));
12
+ var _utils = require("../utils");
13
+ var _useForceUpdate = _interopRequireDefault(require("./useForceUpdate"));
14
+ /**
15
+ * Custom hook that flattens a tree data structure into a map of nodes.
16
+ *
17
+ */
18
+ function useFlattenTree(data, options) {
19
+ var value = options.value,
20
+ labelKey = options.labelKey,
21
+ valueKey = options.valueKey,
22
+ childrenKey = options.childrenKey,
23
+ _options$uncheckableI = options.uncheckableItemValues,
24
+ uncheckableItemValues = _options$uncheckableI === void 0 ? [] : _options$uncheckableI,
25
+ cascade = options.cascade,
26
+ multiple = options.multiple,
27
+ callback = options.callback;
28
+ var forceUpdate = (0, _useForceUpdate.default)();
29
+ var flattenedNodes = (0, _react.useRef)({});
30
+ var updateTreeNodeCheckState = (0, _react.useCallback)(function (value) {
31
+ if (value === void 0) {
32
+ value = [];
33
+ }
34
+ // Reset values to false
35
+ Object.keys(flattenedNodes.current).forEach(function (refKey) {
36
+ var node = flattenedNodes.current[refKey];
37
+ if (cascade && !(0, _isNil.default)(node.parent) && !(0, _isNil.default)(node.parent.refKey)) {
38
+ node.check = flattenedNodes.current[node.parent.refKey].check;
39
+ } else {
40
+ node.check = false;
41
+ }
42
+ value.forEach(function (nodeVal) {
43
+ if ((0, _shallowEqual.default)(flattenedNodes.current[refKey][valueKey], nodeVal) && !uncheckableItemValues.some(function (uncheckableValue) {
44
+ return (0, _shallowEqual.default)(nodeVal, uncheckableValue);
45
+ })) {
46
+ flattenedNodes.current[refKey].check = true;
47
+ }
48
+ });
49
+ });
50
+ }, [cascade, uncheckableItemValues, valueKey]);
51
+ var flattenTreeData = (0, _react.useCallback)(function (treeData, parent, layer) {
52
+ if (layer === void 0) {
53
+ layer = 1;
54
+ }
55
+ if (!Array.isArray(treeData) || treeData.length === 0) {
56
+ return [];
57
+ }
58
+ treeData.map(function (node) {
59
+ var _extends2;
60
+ var value = node[valueKey];
61
+ /**
62
+ * because the value of the node's type is string or number,
63
+ * so it can used as the key of the object directly
64
+ * to avoid number value is converted to string. 1 and '1' will be convert to '1'
65
+ * we used `String_` or `Number_` prefix
66
+ */
67
+ var refKey = (0, _utils.formatNodeRefKey)(value);
68
+ node.refKey = refKey;
69
+ flattenedNodes.current[refKey] = (0, _extends3.default)((_extends2 = {
70
+ layer: layer
71
+ }, _extends2[labelKey] = node[labelKey], _extends2[valueKey] = node[valueKey], _extends2.uncheckable = uncheckableItemValues.some(function (value) {
72
+ return (0, _shallowEqual.default)(node[valueKey], value);
73
+ }), _extends2), node);
74
+ if (parent) {
75
+ flattenedNodes.current[refKey].parent = (0, _omit.default)(parent, 'parent', 'children');
76
+ }
77
+ flattenTreeData(node[childrenKey], node, layer + 1);
78
+ });
79
+ callback === null || callback === void 0 ? void 0 : callback(flattenedNodes.current);
80
+ forceUpdate();
81
+ }, [callback, forceUpdate, valueKey, labelKey, uncheckableItemValues, childrenKey]);
82
+ (0, _react.useEffect)(function () {
83
+ // when data is changed, should clear the flattenedNodes, avoid duplicate keys
84
+ flattenedNodes.current = {};
85
+ flattenTreeData(data);
86
+ }, [data]); // eslint-disable-line react-hooks/exhaustive-deps
87
+
88
+ (0, _react.useEffect)(function () {
89
+ if (multiple) {
90
+ updateTreeNodeCheckState(value);
91
+ forceUpdate();
92
+ }
93
+ // eslint-disable-next-line react-hooks/exhaustive-deps
94
+ }, [value]);
95
+ return flattenedNodes.current;
96
+ }
97
+ var _default = useFlattenTree;
98
+ exports.default = _default;
@@ -0,0 +1,24 @@
1
+ /// <reference types="react" />
2
+ import type { TreeNode } from '../types';
3
+ interface UseFocusTreeProps<T extends TreeNode> {
4
+ filteredData: T[];
5
+ disabledItemValues: any[];
6
+ expandItemValues: any[];
7
+ searchKeyword: string;
8
+ flattenedNodes: any;
9
+ onExpand?: (nodeData: T, expanded: boolean) => void;
10
+ onFocused?: (value: TreeNode['value']) => void;
11
+ }
12
+ /**
13
+ * Custom hook that manages the focus behavior of a tree component.
14
+ */
15
+ declare function useFocusTree(props: UseFocusTreeProps<TreeNode>): {
16
+ treeViewRef: import("react").RefObject<HTMLDivElement>;
17
+ focusTreeFirstNode: (...args: any[]) => any;
18
+ focusItemValue: string | number | null | undefined;
19
+ treeNodesRefs: {};
20
+ saveTreeNodeRef: (ref: import("react").Ref<any>, refKey?: string | undefined) => void;
21
+ setFocusItemValue: import("react").Dispatch<import("react").SetStateAction<string | number | null | undefined>>;
22
+ onTreeKeydown: (...args: any[]) => any;
23
+ };
24
+ export default useFocusTree;