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,6 @@
1
+ /**
2
+ * Custom hook that manages references to tree nodes. */
3
+ export default function useTreeNodeRefs(): {
4
+ treeNodesRefs: {};
5
+ saveTreeNodeRef: (ref: React.Ref<any>, refKey?: string) => void;
6
+ };
@@ -0,0 +1,18 @@
1
+ 'use client';
2
+ import { useRef } from 'react';
3
+ import isNil from 'lodash/isNil';
4
+
5
+ /**
6
+ * Custom hook that manages references to tree nodes. */
7
+ export default function useTreeNodeRefs() {
8
+ var treeNodeRefs = useRef({});
9
+ var saveTreeNodeRef = function saveTreeNodeRef(ref, refKey) {
10
+ if (!isNil(refKey)) {
11
+ treeNodeRefs.current[refKey] = ref;
12
+ }
13
+ };
14
+ return {
15
+ treeNodesRefs: treeNodeRefs.current,
16
+ saveTreeNodeRef: saveTreeNodeRef
17
+ };
18
+ }
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ interface TreeSearchProps<T> {
3
+ searchKeyword?: string;
4
+ data: T[];
5
+ searchBy?: (keyword: any, label: any, item: any) => boolean;
6
+ callback?: (keyword: string, data: T[], event: React.SyntheticEvent) => void;
7
+ }
8
+ /**
9
+ * Custom hook for searching and filtering data in a tree structure.
10
+ */
11
+ export default function useTreeSearch<T>(props: TreeSearchProps<T>): {
12
+ keyword: string;
13
+ filteredData: T[];
14
+ setFilteredData: (data: T[], searchKeyword: string) => void;
15
+ setSearchKeyword: React.Dispatch<React.SetStateAction<string>>;
16
+ handleSearch: (searchKeyword: string, event?: React.ChangeEvent) => void;
17
+ };
18
+ export {};
@@ -0,0 +1,69 @@
1
+ 'use client';
2
+ import { useState, useCallback, useEffect } from 'react';
3
+ import isArray from 'lodash/isArray';
4
+ import { shouldDisplay } from '../../internals/Picker';
5
+ import { useItemDataKeys } from '../TreeProvider';
6
+ /**
7
+ * Custom hook for searching and filtering data in a tree structure.
8
+ */
9
+ export default function useTreeSearch(props) {
10
+ var _useItemDataKeys = useItemDataKeys(),
11
+ labelKey = _useItemDataKeys.labelKey,
12
+ childrenKey = _useItemDataKeys.childrenKey;
13
+ var searchKeyword = props.searchKeyword,
14
+ data = props.data,
15
+ searchBy = props.searchBy,
16
+ callback = props.callback;
17
+ var filterVisibleData = useCallback(function (data, searchKeyword) {
18
+ var setVisible = function setVisible(nodes) {
19
+ return nodes.forEach(function (item) {
20
+ item.visible = searchBy ? searchBy(searchKeyword, item[labelKey], item) : shouldDisplay(item[labelKey], searchKeyword);
21
+ if (isArray(item[childrenKey])) {
22
+ filterVisibleData(item[childrenKey], searchKeyword);
23
+ item[childrenKey].forEach(function (child) {
24
+ if (child.visible) {
25
+ item.visible = child.visible;
26
+ }
27
+ });
28
+ }
29
+ });
30
+ };
31
+ setVisible(data);
32
+ return data;
33
+ }, [childrenKey, labelKey, searchBy]);
34
+
35
+ // Use search keywords to filter options.
36
+ var _useState = useState(searchKeyword !== null && searchKeyword !== void 0 ? searchKeyword : ''),
37
+ keyword = _useState[0],
38
+ setSearchKeyword = _useState[1];
39
+ var _useState2 = useState(function () {
40
+ return filterVisibleData(data, keyword);
41
+ }),
42
+ filteredData = _useState2[0],
43
+ setFilteredData = _useState2[1];
44
+ var handleSearch = function handleSearch(searchKeyword, event) {
45
+ var filteredData = filterVisibleData(data, searchKeyword);
46
+ setFilteredData(filteredData);
47
+ setSearchKeyword(searchKeyword);
48
+ if (event) {
49
+ callback === null || callback === void 0 ? void 0 : callback(searchKeyword, filteredData, event);
50
+ }
51
+ };
52
+ useEffect(function () {
53
+ handleSearch(searchKeyword !== null && searchKeyword !== void 0 ? searchKeyword : '');
54
+ // eslint-disable-next-line react-hooks/exhaustive-deps
55
+ }, [searchKeyword]);
56
+ useEffect(function () {
57
+ setSearchKeyword(searchKeyword !== null && searchKeyword !== void 0 ? searchKeyword : '');
58
+ }, [searchKeyword, setSearchKeyword]);
59
+ var setVisibleData = useCallback(function (data, searchKeyword) {
60
+ setFilteredData(filterVisibleData(data, searchKeyword));
61
+ }, [filterVisibleData]);
62
+ return {
63
+ keyword: keyword,
64
+ filteredData: filteredData,
65
+ setFilteredData: setVisibleData,
66
+ setSearchKeyword: setSearchKeyword,
67
+ handleSearch: handleSearch
68
+ };
69
+ }
@@ -0,0 +1,14 @@
1
+ import { TreeNode } from '../types';
2
+ interface UseTreeWithChildrenOptions {
3
+ valueKey: string;
4
+ childrenKey: string;
5
+ }
6
+ /**
7
+ * Custom hook that provides functionality for managing a tree structure with children.
8
+ */
9
+ export default function useTreeWithChildren<T extends TreeNode>(data: T[], options: UseTreeWithChildrenOptions): {
10
+ treeData: T[];
11
+ loadingNodeValues: never[];
12
+ appendChild: (node: any, getChildren: any) => void;
13
+ };
14
+ export {};
@@ -0,0 +1,59 @@
1
+ 'use client';
2
+ import { useState, useCallback, useEffect } from 'react';
3
+ import shallowEqual from '../../utils/shallowEqual';
4
+ import { findNodeOfTree } from '../../internals/Tree/utils';
5
+ /**
6
+ * Custom hook that provides functionality for managing a tree structure with children.
7
+ */
8
+ export default function useTreeWithChildren(data, options) {
9
+ var valueKey = options.valueKey,
10
+ childrenKey = options.childrenKey;
11
+ var _useState = useState([]),
12
+ loadingNodeValues = _useState[0],
13
+ setLoadingNodeValues = _useState[1];
14
+ var _useState2 = useState(data),
15
+ treeData = _useState2[0],
16
+ setTreeData = _useState2[1];
17
+ useEffect(function () {
18
+ setTreeData(data);
19
+ }, [data]);
20
+ var concatChildren = useCallback(function (treeNode, children) {
21
+ var value = treeNode[valueKey];
22
+ treeNode = findNodeOfTree(data, function (item) {
23
+ return value === item[valueKey];
24
+ });
25
+ treeNode[childrenKey] = children;
26
+ var newData = data.concat([]);
27
+ setTreeData(newData);
28
+ return newData;
29
+ }, [data, valueKey, childrenKey]);
30
+ var appendChild = useCallback(function (node, getChildren) {
31
+ setLoadingNodeValues(function (prev) {
32
+ return prev.concat(node[valueKey]);
33
+ });
34
+ var children = getChildren(node);
35
+ if (children instanceof Promise) {
36
+ children.then(function (res) {
37
+ var newData = concatChildren(node, res);
38
+ setTreeData(newData);
39
+ setLoadingNodeValues(function (prev) {
40
+ return prev.filter(function (item) {
41
+ return !shallowEqual(item, node[valueKey]);
42
+ });
43
+ });
44
+ });
45
+ } else {
46
+ setTreeData(concatChildren(node, children));
47
+ setLoadingNodeValues(function (prev) {
48
+ return prev.filter(function (item) {
49
+ return !shallowEqual(item, node[valueKey]);
50
+ });
51
+ });
52
+ }
53
+ }, [concatChildren, valueKey]);
54
+ return {
55
+ treeData: treeData,
56
+ loadingNodeValues: loadingNodeValues,
57
+ appendChild: appendChild
58
+ };
59
+ }
@@ -0,0 +1,7 @@
1
+ import type { TreeNode, TreeNodeMap } from '../types';
2
+ declare function useVirtualizedTreeData(nodes: TreeNodeMap, data: TreeNode[], options: {
3
+ expandItemValues: (string | number)[];
4
+ cascade?: boolean;
5
+ searchKeyword?: string;
6
+ }): () => TreeNode[];
7
+ export default useVirtualizedTreeData;
@@ -0,0 +1,77 @@
1
+ 'use client';
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import { useCallback } from 'react';
4
+ import intersection from 'lodash/intersection';
5
+ import isUndefined from 'lodash/isUndefined';
6
+ import { getNodeParentKeys } from '../utils/getNodeParentKeys';
7
+ import { isSearching } from '../utils/isSearching';
8
+ import { UNSAFE_flattenTree } from '../utils/flattenTree';
9
+ import { getNodeCheckState } from '../../CheckTree/utils';
10
+ import { useItemDataKeys } from '../TreeProvider';
11
+
12
+ /**
13
+ * Determines whether a node should be shown based on the expanded state of its parent nodes.
14
+ */
15
+ function shouldShowNodeByParentExpanded(expandItemValues, parentKeys) {
16
+ if (expandItemValues === void 0) {
17
+ expandItemValues = [];
18
+ }
19
+ if (parentKeys === void 0) {
20
+ parentKeys = [];
21
+ }
22
+ var intersectionKeys = intersection(expandItemValues, parentKeys);
23
+ if (intersectionKeys.length === parentKeys.length) {
24
+ return true;
25
+ }
26
+ return false;
27
+ }
28
+ function useVirtualizedTreeData(nodes, data, options) {
29
+ var _useItemDataKeys = useItemDataKeys(),
30
+ childrenKey = _useItemDataKeys.childrenKey,
31
+ valueKey = _useItemDataKeys.valueKey;
32
+ /**
33
+ * Formats the virtualized tree data.
34
+ */
35
+ return useCallback(function () {
36
+ var cascade = options.cascade,
37
+ searchKeyword = options.searchKeyword,
38
+ expandItemValues = options.expandItemValues;
39
+ return UNSAFE_flattenTree(data, childrenKey, function (node) {
40
+ var formatted = {};
41
+ var curNode = nodes === null || nodes === void 0 ? void 0 : nodes[node.refKey];
42
+ var parentKeys = getNodeParentKeys(nodes, curNode, valueKey);
43
+ /**
44
+ * When using virtualized,
45
+ * if the parent node is collapsed, the child nodes should be hidden
46
+ * avoid component height calculation errors
47
+ */
48
+ var visible = curNode !== null && curNode !== void 0 && curNode.parent ? shouldShowNodeByParentExpanded(expandItemValues, parentKeys) : true;
49
+
50
+ /**
51
+ * when searching, every node default expand
52
+ * the node's visible should follow the original state
53
+ */
54
+ if (isSearching(searchKeyword)) {
55
+ visible = node.visible;
56
+ }
57
+ if (curNode) {
58
+ var checkState = !isUndefined(cascade) ? getNodeCheckState(curNode, {
59
+ cascade: cascade,
60
+ nodes: nodes,
61
+ childrenKey: childrenKey
62
+ }) : undefined;
63
+ formatted = _extends({}, node, {
64
+ check: curNode.check,
65
+ uncheckable: curNode.uncheckable,
66
+ hasChildren: !!node[childrenKey],
67
+ layer: curNode.layer,
68
+ parent: curNode.parent,
69
+ checkState: checkState,
70
+ visible: visible
71
+ });
72
+ }
73
+ return formatted;
74
+ });
75
+ }, [childrenKey, data, nodes, options, valueKey]);
76
+ }
77
+ export default useVirtualizedTreeData;
@@ -0,0 +1,257 @@
1
+ /// <reference types="react" />
2
+ import type { CheckStateType } from '../utils/constants';
3
+ import type { StandardProps } from '../@types/common';
4
+ import type { ListProps } from '../internals/Windowing';
5
+ /**
6
+ * Represents a single node in a tree.
7
+ */
8
+ export interface TreeNode extends Record<string, any> {
9
+ /**
10
+ * Specifies whether the node is uncheckable.
11
+ */
12
+ uncheckable?: boolean;
13
+ /**
14
+ * The reference key of the node.
15
+ */
16
+ refKey?: string;
17
+ /**
18
+ * Specifies whether the node is checked.
19
+ */
20
+ check?: boolean;
21
+ /**
22
+ * The parent node of the current node.
23
+ */
24
+ parent?: TreeNode;
25
+ /**
26
+ * Specifies whether all child nodes are checked.
27
+ */
28
+ checkAll?: boolean;
29
+ /**
30
+ * Specifies whether the node is visible.
31
+ */
32
+ visible?: boolean;
33
+ /**
34
+ * Specifies whether the node is expanded.
35
+ */
36
+ expand?: boolean;
37
+ /**
38
+ * The layer of the node in the tree hierarchy.
39
+ */
40
+ layer?: number;
41
+ /**
42
+ * The label of the node.
43
+ */
44
+ label?: string | React.ReactNode;
45
+ /**
46
+ * The value of the node.
47
+ */
48
+ value?: string | number;
49
+ /**
50
+ * The property to group nodes by.
51
+ */
52
+ groupBy?: string;
53
+ /**
54
+ * The child nodes of the current node.
55
+ */
56
+ children?: TreeNode[];
57
+ /**
58
+ * Specifies whether the node has children.
59
+ */
60
+ hasChildren?: boolean;
61
+ /**
62
+ * The check state of the node.
63
+ */
64
+ checkState?: CheckStateType;
65
+ }
66
+ /**
67
+ * Represents a map of tree nodes.
68
+ */
69
+ export interface TreeNodeMap {
70
+ [key: string]: TreeNode;
71
+ }
72
+ /**
73
+ * Tree Node Drag Type
74
+ */
75
+ export declare enum TREE_NODE_DROP_POSITION {
76
+ DRAG_OVER = 0,
77
+ DRAG_OVER_TOP = 1,
78
+ DRAG_OVER_BOTTOM = 2
79
+ }
80
+ export interface DropData<T> {
81
+ /** drag node data */
82
+ dragNode: T;
83
+ /** dropNode data */
84
+ dropNode: T;
85
+ /** node drop position */
86
+ dropNodePosition: TREE_NODE_DROP_POSITION;
87
+ /** Update Data when drop node */
88
+ createUpdateDataFunction: (data: T[]) => T[];
89
+ }
90
+ /**
91
+ * Represents the drag-related props for the Tree component.
92
+ */
93
+ export interface TreeDragProps<T = Record<string, any>> {
94
+ /**
95
+ * Specifies whether the node can be dragged.
96
+ */
97
+ draggable?: boolean;
98
+ /**
99
+ * Called when scrolling.
100
+ * @param event - The scroll event.
101
+ */
102
+ onScroll?: (event: React.SyntheticEvent) => void;
103
+ /**
104
+ * Called when the node drag starts.
105
+ * @param nodeData - The data associated with the dragged node.
106
+ * @param e - The drag event.
107
+ */
108
+ onDragStart?: (nodeData: T, e: React.DragEvent) => void;
109
+ /**
110
+ * Called when the node is dragged over.
111
+ * @param nodeData - The data associated with the dragged node.
112
+ * @param e - The drag event.
113
+ */
114
+ onDragEnter?: (nodeData: T, e: React.DragEvent) => void;
115
+ /**
116
+ * Called when the node is dragged over.
117
+ * @param nodeData - The data associated with the dragged node.
118
+ * @param e - The drag event.
119
+ */
120
+ onDragOver?: (nodeData: T, e: React.DragEvent) => void;
121
+ /**
122
+ * Called when the node is dragged out.
123
+ * @param nodeData - The data associated with the dragged node.
124
+ * @param e - The drag event.
125
+ */
126
+ onDragLeave?: (nodeData: T, e: React.DragEvent) => void;
127
+ /**
128
+ * Called when the node drag ends.
129
+ * @param nodeData - The data associated with the dragged node.
130
+ * @param e - The drag event.
131
+ */
132
+ onDragEnd?: (nodeData: T, e: React.DragEvent) => void;
133
+ /**
134
+ * Called when a node is dropped.
135
+ * @param dropData - The data associated with the dropped node.
136
+ * @param e - The drag event.
137
+ */
138
+ onDrop?: (dropData: DropData<T>, e: React.DragEvent) => void;
139
+ }
140
+ /**
141
+ * Represents the base props for the Tree component.
142
+ *
143
+ * @template V - The type of the value associated with each tree node.
144
+ * @template T - The type of the tree node.
145
+ */
146
+ /**
147
+ * Represents the props for the Tree component.
148
+ */
149
+ export interface TreeViewBaseProps<V = string | number, T = TreeNode> extends StandardProps {
150
+ /**
151
+ * The height of the tree.
152
+ */
153
+ height?: number;
154
+ /**
155
+ * Whether to display the search input box.
156
+ */
157
+ searchable?: boolean;
158
+ /**
159
+ * Whether to display an auxiliary line when the tree node is indented.
160
+ */
161
+ showIndentLine?: boolean;
162
+ /**
163
+ * Whether to use virtualized list.
164
+ */
165
+ virtualized?: boolean;
166
+ /**
167
+ * Props for the virtualized list.
168
+ */
169
+ listProps?: Partial<ListProps>;
170
+ /**
171
+ * The search keyword (controlled).
172
+ */
173
+ searchKeyword?: string;
174
+ /**
175
+ * The option values for the expand nodes with controlled.
176
+ */
177
+ expandItemValues?: any[];
178
+ /**
179
+ * Callback function for expanding tree nodes.
180
+ * @param expandItemValues - The values of the expanded nodes.
181
+ * @param activeNode - The currently active node.
182
+ * @param concat - A function to concatenate data and children.
183
+ */
184
+ onExpand?: (expandItemValues: T[], activeNode: T, concat: (data: T[], children: T[]) => T[]) => void;
185
+ /**
186
+ * Callback function after selecting a tree node.
187
+ * @param activeNode - The currently active node.
188
+ * @param value - The value of the selected node.
189
+ * @param event - The event object.
190
+ */
191
+ onSelect?: (activeNode: T, value: V, event: React.SyntheticEvent) => void;
192
+ /**
193
+ * Callback when a tree item is clicked.
194
+ * @param item - The clicked tree item.
195
+ * @param path - The path of the clicked item.
196
+ */
197
+ onSelectItem?: (item: T, path: T[]) => void;
198
+ /**
199
+ * Callback fired when searching.
200
+ * @param searchKeyword - The search keyword.
201
+ * @param event - The event object.
202
+ */
203
+ onSearch?: (searchKeyword: string, event: React.SyntheticEvent) => void;
204
+ /**
205
+ * Callback fired when cleaning.
206
+ * @param event - The event object.
207
+ */
208
+ onClean?: (event: React.SyntheticEvent) => void;
209
+ /**
210
+ * Custom search rules.
211
+ * @param keyword - The search keyword.
212
+ * @param label - The label of the tree item.
213
+ * @param item - The tree item.
214
+ * @returns Whether the item matches the search criteria.
215
+ */
216
+ searchBy?: (keyword: string, label: React.ReactNode, item: any) => boolean;
217
+ /**
218
+ * Callback function called after the value has been changed.
219
+ * @param value - The new value.
220
+ * @param event - The event object.
221
+ */
222
+ onChange?: (value: V, event: React.SyntheticEvent) => void;
223
+ }
224
+ export interface TreeExtraProps<T = TreeNode> {
225
+ /**
226
+ * Whether to expand all nodes by default.
227
+ */
228
+ defaultExpandAll?: boolean;
229
+ /**
230
+ * The option values for the expand nodes by default.
231
+ */
232
+ defaultExpandItemValues?: any[];
233
+ /**
234
+ * Function to load node children data asynchronously.
235
+ * @param activeNode - The currently active node.
236
+ * @returns The children of the active node.
237
+ */
238
+ getChildren?: (activeNode: T) => T[] | Promise<T[]>;
239
+ /**
240
+ * Custom render function for the tree.
241
+ * @param menu - The menu to be rendered.
242
+ * @returns The rendered tree.
243
+ */
244
+ renderTree?: (menu: React.ReactNode) => React.ReactNode;
245
+ /**
246
+ * Custom render function for tree nodes.
247
+ * @param nodeData - The data of the tree node.
248
+ * @returns The rendered node.
249
+ */
250
+ renderTreeNode?: (nodeData: T) => React.ReactNode;
251
+ /**
252
+ * Custom render function for tree icons.
253
+ * @param nodeData - The data of the tree node.
254
+ * @returns The rendered icon.
255
+ */
256
+ renderTreeIcon?: (nodeData: T, expanded?: boolean) => React.ReactNode;
257
+ }
@@ -0,0 +1,30 @@
1
+ 'use client';
2
+ /**
3
+ * Represents a single node in a tree.
4
+ */
5
+
6
+ /**
7
+ * Represents a map of tree nodes.
8
+ */
9
+
10
+ /**
11
+ * Tree Node Drag Type
12
+ */
13
+ export var TREE_NODE_DROP_POSITION;
14
+ (function (TREE_NODE_DROP_POSITION) {
15
+ TREE_NODE_DROP_POSITION[TREE_NODE_DROP_POSITION["DRAG_OVER"] = 0] = "DRAG_OVER";
16
+ TREE_NODE_DROP_POSITION[TREE_NODE_DROP_POSITION["DRAG_OVER_TOP"] = 1] = "DRAG_OVER_TOP";
17
+ TREE_NODE_DROP_POSITION[TREE_NODE_DROP_POSITION["DRAG_OVER_BOTTOM"] = 2] = "DRAG_OVER_BOTTOM";
18
+ })(TREE_NODE_DROP_POSITION || (TREE_NODE_DROP_POSITION = {}));
19
+ /**
20
+ * Represents the drag-related props for the Tree component.
21
+ */
22
+ /**
23
+ * Represents the base props for the Tree component.
24
+ *
25
+ * @template V - The type of the value associated with each tree node.
26
+ * @template T - The type of the tree node.
27
+ */
28
+ /**
29
+ * Represents the props for the Tree component.
30
+ */
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Strategy for walking the tree.
3
+ */
4
+ export declare enum WalkTreeStrategy {
5
+ DFS = 0,
6
+ BFS = 1
7
+ }
8
+ /**
9
+ * Flattens a tree structure into an array.
10
+ */
11
+ export declare function flattenTree<T>(rootNodes: readonly T[], getChildren: (node: T) => readonly T[] | undefined, walkStrategy?: WalkTreeStrategy): T[];
12
+ /**
13
+ * Walks the tree in a breadth-first search (BFS) manner.
14
+ */
15
+ export declare function walkTreeBfs<T>(rootNodes: readonly T[], getChildren: (node: T) => readonly T[] | undefined, callback: (node: T) => void): void;
16
+ /**
17
+ * Walks the tree in a depth-first search (DFS) manner.
18
+ */
19
+ export declare function walkTreeDfs<T>(rootNodes: readonly T[], getChildren: (node: T) => readonly T[] | undefined, callback: (node: T) => void): void;
20
+ /**
21
+ * Flattens a tree structure to an array (deprecated).
22
+ * @deprecated This function is considered unsafe because it mutates the `tree` argument in-place.
23
+ * Use the `flattenTree` function instead.
24
+ */
25
+ export declare function UNSAFE_flattenTree<TItem>(tree: TItem[], childrenKey?: string, executor?: (node: any, index: number) => any): TItem[];
@@ -0,0 +1,88 @@
1
+ 'use client';
2
+ function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
5
+ import { attachParent } from '../../utils/attachParent';
6
+
7
+ /**
8
+ * Strategy for walking the tree.
9
+ */
10
+ export var WalkTreeStrategy;
11
+
12
+ /**
13
+ * Flattens a tree structure into an array.
14
+ */
15
+ (function (WalkTreeStrategy) {
16
+ WalkTreeStrategy[WalkTreeStrategy["DFS"] = 0] = "DFS";
17
+ WalkTreeStrategy[WalkTreeStrategy["BFS"] = 1] = "BFS";
18
+ })(WalkTreeStrategy || (WalkTreeStrategy = {}));
19
+ export function flattenTree(rootNodes, getChildren, walkStrategy) {
20
+ if (walkStrategy === void 0) {
21
+ walkStrategy = WalkTreeStrategy.BFS;
22
+ }
23
+ var result = [];
24
+ if (walkStrategy === WalkTreeStrategy.BFS) {
25
+ walkTreeBfs(rootNodes, getChildren, function (node) {
26
+ return result.push(node);
27
+ });
28
+ } else if (walkStrategy === WalkTreeStrategy.DFS) {
29
+ walkTreeDfs(rootNodes, getChildren, function (node) {
30
+ return result.push(node);
31
+ });
32
+ }
33
+ return result;
34
+ }
35
+
36
+ /**
37
+ * Walks the tree in a breadth-first search (BFS) manner.
38
+ */
39
+ export function walkTreeBfs(rootNodes, getChildren, callback) {
40
+ for (var queue = [].concat(rootNodes); queue.length > 0;) {
41
+ var _node = queue.shift();
42
+ callback(_node);
43
+ var children = getChildren(_node);
44
+ if (children) {
45
+ queue.push.apply(queue, children);
46
+ }
47
+ }
48
+ }
49
+
50
+ /**
51
+ * Walks the tree in a depth-first search (DFS) manner.
52
+ */
53
+ export function walkTreeDfs(rootNodes, getChildren, callback) {
54
+ for (var _iterator = _createForOfIteratorHelperLoose(rootNodes), _step; !(_step = _iterator()).done;) {
55
+ var _node2 = _step.value;
56
+ callback(_node2);
57
+ var children = getChildren(_node2);
58
+ if (children) {
59
+ walkTreeDfs(children, getChildren, callback);
60
+ }
61
+ }
62
+ }
63
+
64
+ /**
65
+ * Flattens a tree structure to an array (deprecated).
66
+ * @deprecated This function is considered unsafe because it mutates the `tree` argument in-place.
67
+ * Use the `flattenTree` function instead.
68
+ */
69
+ export function UNSAFE_flattenTree(tree, childrenKey, executor) {
70
+ if (childrenKey === void 0) {
71
+ childrenKey = 'children';
72
+ }
73
+ var flattenData = [];
74
+ var traverse = function traverse(data, parent) {
75
+ if (!Array.isArray(data)) {
76
+ return;
77
+ }
78
+ data.forEach(function (item, index) {
79
+ var node = typeof executor === 'function' ? executor(item, index) : item;
80
+ flattenData.push(attachParent(node, parent));
81
+ if (item[childrenKey]) {
82
+ traverse(item[childrenKey], item);
83
+ }
84
+ });
85
+ };
86
+ traverse(tree, null);
87
+ return flattenData;
88
+ }