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
@@ -88,6 +88,29 @@ export interface PickerBaseProps<L = any> extends WithAsProps, AnimationEventPro
88
88
  /** Custom render extra footer */
89
89
  renderExtraFooter?: () => React.ReactNode;
90
90
  }
91
+ export interface DeprecatedPickerProps {
92
+ /**
93
+ * Custom menu class name
94
+ * @deprecated Use `popupClassName` instead
95
+ */
96
+ menuClassName?: string;
97
+ /**
98
+ * Custom menu style
99
+ * @deprecated Use `popupStyle` instead
100
+ */
101
+ menuStyle?: React.CSSProperties;
102
+ /**
103
+ * Picker menu auto width
104
+ *
105
+ * @deprecated Use `popupAutoWidth` instead
106
+ */
107
+ menuAutoWidth?: boolean;
108
+ /**
109
+ * Custom render tree
110
+ * @deprecated Use `renderTree` instead
111
+ */
112
+ renderMenu?: (menu: React.ReactNode) => React.ReactNode;
113
+ }
91
114
  export interface FormControlBaseProps<ValueType = React.InputHTMLAttributes<HTMLInputElement>['value']> {
92
115
  /** Name of the form field */
93
116
  name?: string;
@@ -109,14 +132,28 @@ export interface FormControlBaseProps<ValueType = React.InputHTMLAttributes<HTML
109
132
  readOnly?: boolean;
110
133
  }
111
134
  export declare type ToArray<V> = V extends any[] ? V : V[];
135
+ /**
136
+ * Represents the data properties for a component.
137
+ */
112
138
  export interface DataProps<TData> {
113
- /** The data of component */
139
+ /**
140
+ * The data of the component.
141
+ */
114
142
  data: TData[];
115
- /** Set option value 'key' in 'data' */
143
+ /**
144
+ * The key to use for setting the option value in the data.
145
+ * @default value
146
+ */
116
147
  valueKey?: string;
117
- /** Set options to display the 'key' in 'data' */
148
+ /**
149
+ * The key to use for displaying the options in the data.
150
+ * @default label
151
+ */
118
152
  labelKey?: string;
119
- /** Set children key in data */
153
+ /**
154
+ * The key to use for setting the children in the data.
155
+ * @default children
156
+ */
120
157
  childrenKey?: string;
121
158
  }
122
159
  export interface FormControlPickerProps<T = any, L = any, D = Record<string, any>, I = T> extends PickerBaseProps<L>, FormControlBaseProps<T>, DataProps<D> {
@@ -172,7 +172,8 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
172
172
  onSelect: handleItemSelect,
173
173
  renderMenuItem: renderMenuItem,
174
174
  data: items,
175
- className: menuClassName
175
+ className: menuClassName,
176
+ query: value
176
177
  });
177
178
  return /*#__PURE__*/React.createElement(PickerPopup, {
178
179
  ref: mergeRefs(overlay, speakerRef),
@@ -2,7 +2,8 @@
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
4
  import React, { useCallback, useMemo } from 'react';
5
- import { getParentMap, flattenTree } from '../utils/treeUtils';
5
+ import { getParentMap } from '../internals/Tree/utils';
6
+ import { flattenTree } from '../Tree/utils';
6
7
  import { useControlled, useClassNames, useEventCallback } from '../utils';
7
8
  import { useMap } from '../utils/useMap';
8
9
  import TreeView from './TreeView';
@@ -3,8 +3,8 @@ import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
4
  import React from 'react';
5
5
  import { useClassNames, useCustom } from '../utils';
6
- import { getPathTowardsItem } from '../utils/treeUtils';
7
- import { highlightLabel } from './utils';
6
+ import { getPathTowardsItem } from '../internals/Tree/utils';
7
+ import Highlight from '../Highlight';
8
8
  import SearchBox from '../internals/SearchBox';
9
9
  function SearchView(props) {
10
10
  var _props$as = props.as,
@@ -38,17 +38,10 @@ function SearchView(props) {
38
38
  });
39
39
  var formattedNodes = items.map(function (itemData) {
40
40
  var _extends2;
41
- var label = highlightLabel({
42
- item: itemData,
43
- labelKey: labelKey,
44
- searchKeyword: searchKeyword,
45
- render: function render(patch, index) {
46
- return /*#__PURE__*/React.createElement("span", {
47
- key: index,
48
- className: prefix('match')
49
- }, patch);
50
- }
51
- });
41
+ var label = /*#__PURE__*/React.createElement(Highlight, {
42
+ as: "span",
43
+ query: searchKeyword
44
+ }, itemData[labelKey]);
52
45
  return _extends({}, itemData, (_extends2 = {}, _extends2[labelKey] = label, _extends2));
53
46
  });
54
47
  var disabled = disabledItemValues.some(function (value) {
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { useMemo } from 'react';
3
- import { getPathTowardsItem } from '../../utils/treeUtils';
3
+ import { getPathTowardsItem } from '../../internals/Tree/utils';
4
4
  import { getColumnsAndPaths } from '../utils';
5
5
  /**
6
6
  * A Hook to get the selected path of Tree.
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
  import { useState } from 'react';
3
- import { getSafeRegExpString, useEventCallback } from '../../utils';
3
+ import { useEventCallback } from '../../utils';
4
+ import { getSafeRegExpString } from '../../internals/utils';
4
5
  function useSearch(props) {
5
6
  var _useState = useState(''),
6
7
  searchKeyword = _useState[0],
@@ -1,5 +1,3 @@
1
- /// <reference types="react" />
2
- import { ItemDataType } from '../@types/common';
3
1
  declare type GetColumnsAndPathsOptions<T> = {
4
2
  getParent: (item: T) => T | undefined;
5
3
  getChildren: (item: T) => readonly T[] | undefined;
@@ -20,13 +18,4 @@ export declare function getColumnsAndPaths<T extends Record<string, unknown>>(it
20
18
  columns: (readonly T[])[];
21
19
  path: T[];
22
20
  };
23
- /**
24
- * Highlight the search keyword in the label
25
- */
26
- export declare function highlightLabel<T>(props: {
27
- item: ItemDataType<T>;
28
- labelKey: string;
29
- searchKeyword: string;
30
- render: (patch: React.ReactNode, index: number) => React.ReactNode;
31
- }): import("react").ReactNode[];
32
21
  export {};
@@ -1,5 +1,4 @@
1
1
  'use client';
2
- import { getSafeRegExpString } from '../utils';
3
2
  /**
4
3
  * Calculate columns to be displayed:
5
4
  *
@@ -37,25 +36,4 @@ export function getColumnsAndPaths(items, pathTarget, options) {
37
36
  columns: columns,
38
37
  path: path
39
38
  };
40
- }
41
-
42
- /**
43
- * Highlight the search keyword in the label
44
- */
45
- export function highlightLabel(props) {
46
- var item = props.item,
47
- searchKeyword = props.searchKeyword,
48
- labelKey = props.labelKey,
49
- render = props.render;
50
- var regx = new RegExp(getSafeRegExpString(searchKeyword), 'ig');
51
- var labelElements = [];
52
- var strArr = item[labelKey].split(regx);
53
- var highStrArr = item[labelKey].match(regx);
54
- for (var i = 0; i < strArr.length; i++) {
55
- labelElements.push(strArr[i]);
56
- if (highStrArr !== null && highStrArr !== void 0 && highStrArr[i]) {
57
- labelElements.push(render(highStrArr[i], i));
58
- }
59
- }
60
- return labelElements;
61
39
  }
@@ -10,7 +10,8 @@ import isFunction from 'lodash/isFunction';
10
10
  import TreeView from '../CascadeTree/TreeView';
11
11
  import SearchView from '../CascadeTree/SearchView';
12
12
  import { usePaths, useSelect, useSearch } from '../CascadeTree/hooks';
13
- import { getParentMap, findNodeOfTree, flattenTree } from '../utils/treeUtils';
13
+ import { flattenTree } from '../Tree/utils';
14
+ import { findNodeOfTree, getParentMap } from '../internals/Tree/utils';
14
15
  import { deprecatePropTypeNew } from '../internals/propTypes';
15
16
  import { createChainedFunction, mergeRefs, shallowEqual, useControlled, useCustom, useClassNames, useEventCallback } from '../utils';
16
17
  import { PickerToggle, PickerPopup, PickerToggleTrigger, usePickerClassName, usePickerRef, useToggleKeyDownEvent, useFocusItemValue, pickTriggerPropKeys, omitTriggerPropKeys, listPickerPropTypes } from '../internals/Picker';
@@ -6,13 +6,12 @@ var _templateObject;
6
6
  import React, { useState } from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import clone from 'lodash/clone';
9
- import isUndefined from 'lodash/isUndefined';
10
9
  import isFunction from 'lodash/isFunction';
11
10
  import remove from 'lodash/remove';
12
11
  import omit from 'lodash/omit';
13
12
  import pick from 'lodash/pick';
14
13
  import isNil from 'lodash/isNil';
15
- import { filterNodesOfTree } from '../utils/treeUtils';
14
+ import { filterNodesOfTree } from '../internals/Tree/utils';
16
15
  import { createChainedFunction, useClassNames, shallowEqual, useCustom, useControlled, useEventCallback, mergeRefs } from '../utils';
17
16
  import { getDataGroupBy } from '../utils/getDataGroupBy';
18
17
  import { Listbox, ListCheckItem, PickerToggle, PickerPopup, SelectedElement, PickerToggleTrigger, useFocusItemValue, usePickerClassName, useSearch, useToggleKeyDownEvent, usePickerRef, pickTriggerPropKeys, omitTriggerPropKeys, listPickerPropTypes } from '../internals/Picker';
@@ -282,14 +281,12 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
282
281
  listItemAs: ListCheckItem,
283
282
  activeItemValues: value,
284
283
  focusItemValue: focusItemValue,
285
- data: [].concat(filteredStickyItems, items)
286
- // `group` is redundant so long as `groupBy` exists
287
- ,
288
- group: !isUndefined(groupBy),
284
+ data: [].concat(filteredStickyItems, items),
289
285
  groupBy: groupBy,
290
286
  onSelect: handleItemSelect,
291
287
  onGroupTitleClick: onGroupTitleClick,
292
- virtualized: virtualized
288
+ virtualized: virtualized,
289
+ query: searchKeyword
293
290
  }) : /*#__PURE__*/React.createElement("div", {
294
291
  className: prefix(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["none"])))
295
292
  }, locale === null || locale === void 0 ? void 0 : locale.noResultsText);
@@ -0,0 +1,16 @@
1
+ import { type CheckTreeViewProps } from './CheckTreeView';
2
+ import type { RsRefForwardingComponent } from '../@types/common';
3
+ import type { TreeExtraProps } from '../Tree/types';
4
+ export declare type ValueType = (string | number)[];
5
+ export interface CheckTreeProps<T = ValueType> extends CheckTreeViewProps<T>, TreeExtraProps {
6
+ /**
7
+ * Default selected Value
8
+ */
9
+ defaultValue?: T;
10
+ }
11
+ /**
12
+ * The `CheckTree` component is used for selecting multiple options which are organized in a tree structure.
13
+ * @see https://rsuitejs.com/components/check-tree
14
+ */
15
+ declare const CheckTree: RsRefForwardingComponent<'div', CheckTreeProps>;
16
+ export default CheckTree;
@@ -0,0 +1,105 @@
1
+ 'use client';
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
+ import React, { useMemo } from 'react';
5
+ import { useEventCallback } from '../utils';
6
+ import useTreeValue from './hooks/useTreeValue';
7
+ import CheckTreeView from './CheckTreeView';
8
+ import useFlattenTree from '../Tree/hooks/useFlattenTree';
9
+ import useTreeWithChildren from '../Tree/hooks/useTreeWithChildren';
10
+ import useExpandTree from '../Tree/hooks/useExpandTree';
11
+ import { TreeProvider } from '../Tree/TreeProvider';
12
+ /**
13
+ * The `CheckTree` component is used for selecting multiple options which are organized in a tree structure.
14
+ * @see https://rsuitejs.com/components/check-tree
15
+ */
16
+ var CheckTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
17
+ var controlledValue = props.value,
18
+ data = props.data,
19
+ defaultValue = props.defaultValue,
20
+ _props$defaultExpandA = props.defaultExpandAll,
21
+ defaultExpandAll = _props$defaultExpandA === void 0 ? false : _props$defaultExpandA,
22
+ _props$defaultExpandI = props.defaultExpandItemValues,
23
+ defaultExpandItemValues = _props$defaultExpandI === void 0 ? [] : _props$defaultExpandI,
24
+ uncheckableItemValues = props.uncheckableItemValues,
25
+ controlledExpandItemValues = props.expandItemValues,
26
+ _props$childrenKey = props.childrenKey,
27
+ childrenKey = _props$childrenKey === void 0 ? 'children' : _props$childrenKey,
28
+ _props$labelKey = props.labelKey,
29
+ labelKey = _props$labelKey === void 0 ? 'label' : _props$labelKey,
30
+ _props$valueKey = props.valueKey,
31
+ valueKey = _props$valueKey === void 0 ? 'value' : _props$valueKey,
32
+ virtualized = props.virtualized,
33
+ _props$cascade = props.cascade,
34
+ cascade = _props$cascade === void 0 ? true : _props$cascade,
35
+ renderTreeIcon = props.renderTreeIcon,
36
+ renderTreeNode = props.renderTreeNode,
37
+ getChildren = props.getChildren,
38
+ onExpand = props.onExpand,
39
+ onChange = props.onChange,
40
+ rest = _objectWithoutPropertiesLoose(props, ["value", "data", "defaultValue", "defaultExpandAll", "defaultExpandItemValues", "uncheckableItemValues", "expandItemValues", "childrenKey", "labelKey", "valueKey", "virtualized", "cascade", "renderTreeIcon", "renderTreeNode", "getChildren", "onExpand", "onChange"]);
41
+ var _useTreeValue = useTreeValue(controlledValue, {
42
+ defaultValue: defaultValue,
43
+ uncheckableItemValues: uncheckableItemValues
44
+ }),
45
+ value = _useTreeValue[0],
46
+ setValue = _useTreeValue[1];
47
+ var itemDataKeys = {
48
+ childrenKey: childrenKey,
49
+ labelKey: labelKey,
50
+ valueKey: valueKey
51
+ };
52
+ var _useTreeWithChildren = useTreeWithChildren(data, itemDataKeys),
53
+ treeData = _useTreeWithChildren.treeData,
54
+ loadingNodeValues = _useTreeWithChildren.loadingNodeValues,
55
+ appendChild = _useTreeWithChildren.appendChild;
56
+ var _useExpandTree = useExpandTree(data, _extends({}, itemDataKeys, {
57
+ defaultExpandAll: defaultExpandAll,
58
+ defaultExpandItemValues: defaultExpandItemValues,
59
+ controlledExpandItemValues: controlledExpandItemValues,
60
+ onExpand: onExpand,
61
+ getChildren: getChildren,
62
+ appendChild: appendChild
63
+ })),
64
+ expandItemValues = _useExpandTree.expandItemValues,
65
+ handleExpandTreeNode = _useExpandTree.handleExpandTreeNode;
66
+ var flattenedNodes = useFlattenTree(treeData, _extends({}, itemDataKeys, {
67
+ uncheckableItemValues: uncheckableItemValues,
68
+ multiple: true,
69
+ cascade: cascade,
70
+ value: value
71
+ }));
72
+ var handleChange = useEventCallback(function (nextValue, event) {
73
+ setValue(nextValue);
74
+ onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
75
+ });
76
+ var treeContext = useMemo(function () {
77
+ return {
78
+ props: {
79
+ labelKey: labelKey,
80
+ valueKey: valueKey,
81
+ childrenKey: childrenKey,
82
+ virtualized: virtualized,
83
+ renderTreeIcon: renderTreeIcon,
84
+ renderTreeNode: renderTreeNode
85
+ }
86
+ };
87
+ }, [childrenKey, labelKey, valueKey, virtualized, renderTreeIcon, renderTreeNode]);
88
+ return /*#__PURE__*/React.createElement(TreeProvider, {
89
+ value: treeContext
90
+ }, /*#__PURE__*/React.createElement(CheckTreeView, _extends({}, rest, {
91
+ ref: ref,
92
+ value: value,
93
+ cascade: cascade,
94
+ data: treeData,
95
+ virtualized: virtualized,
96
+ loadingNodeValues: loadingNodeValues,
97
+ flattenedNodes: flattenedNodes,
98
+ uncheckableItemValues: uncheckableItemValues,
99
+ expandItemValues: expandItemValues,
100
+ onChange: handleChange,
101
+ onExpand: handleExpandTreeNode
102
+ })));
103
+ });
104
+ CheckTree.displayName = 'CheckTree';
105
+ export default CheckTree;
@@ -0,0 +1,72 @@
1
+ import React from 'react';
2
+ import { RsRefForwardingComponent, WithAsProps } from '../@types/common';
3
+ import { CheckStateType } from '../utils';
4
+ import type { TreeNode as TreeNodeData } from '../Tree/types';
5
+ export interface CheckTreeNodeProps extends WithAsProps {
6
+ /**
7
+ * The label of the node.
8
+ */
9
+ label?: any;
10
+ /**
11
+ * The layer of the node in the tree hierarchy.
12
+ */
13
+ layer: number;
14
+ /**
15
+ * The value of the node.
16
+ */
17
+ value?: any;
18
+ /**
19
+ * Whether the node should be focused.
20
+ */
21
+ focus?: boolean;
22
+ /**
23
+ * Whether the node should be expanded.
24
+ */
25
+ expanded?: boolean;
26
+ /**
27
+ * Whether the node is in a loading state.
28
+ */
29
+ loading?: boolean;
30
+ /**
31
+ * Whether the node is visible.
32
+ */
33
+ visible?: boolean;
34
+ /**
35
+ * Additional data associated with the node.
36
+ */
37
+ nodeData?: any;
38
+ /**
39
+ * Whether the node is disabled.
40
+ */
41
+ disabled?: boolean;
42
+ /**
43
+ * The check state of the node.
44
+ */
45
+ checkState?: CheckStateType;
46
+ /**
47
+ * Whether the node has children.
48
+ */
49
+ hasChildren?: boolean;
50
+ /**
51
+ * Whether the node is uncheckable.
52
+ */
53
+ uncheckable?: boolean;
54
+ /**
55
+ * Whether all nodes are uncheckable.
56
+ */
57
+ allUncheckable?: boolean;
58
+ /**
59
+ * Reference to the tree item.
60
+ */
61
+ treeItemRef?: React.Ref<any>;
62
+ /**
63
+ * Callback function called when the node is expanded.
64
+ */
65
+ onExpand?: (nodeData: TreeNodeData, expanded?: boolean) => void;
66
+ /**
67
+ * Callback function called when the node is selected.
68
+ */
69
+ onSelect?: (nodeData: TreeNodeData, event: React.SyntheticEvent) => void;
70
+ }
71
+ declare const CheckTreeNode: RsRefForwardingComponent<'div', CheckTreeNodeProps>;
72
+ export default CheckTreeNode;
@@ -0,0 +1,110 @@
1
+ 'use client';
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
+ import React, { forwardRef, useMemo } from 'react';
5
+ import ListCheckItem from '../internals/Picker/ListCheckItem';
6
+ import { stringifyReactNode } from '../internals/utils';
7
+ import { useFoucsVirtualListItem } from '../internals/hooks';
8
+ import { indentTreeNode } from '../Tree/utils';
9
+ import { useClassNames, useEventCallback, useCustom, CHECK_STATE, mergeRefs } from '../utils';
10
+ import { useTreeContextProps } from '../Tree/TreeProvider';
11
+ import TreeNodeToggle from '../Tree/TreeNodeToggle';
12
+ var CheckTreeNode = /*#__PURE__*/forwardRef(function (props, ref) {
13
+ var _props$as = props.as,
14
+ Component = _props$as === void 0 ? 'div' : _props$as,
15
+ style = props.style,
16
+ className = props.className,
17
+ _props$classPrefix = props.classPrefix,
18
+ classPrefix = _props$classPrefix === void 0 ? 'check-tree-node' : _props$classPrefix,
19
+ _props$visible = props.visible,
20
+ visible = _props$visible === void 0 ? true : _props$visible,
21
+ layer = props.layer,
22
+ disabled = props.disabled,
23
+ allUncheckable = props.allUncheckable,
24
+ loading = props.loading,
25
+ expanded = props.expanded,
26
+ hasChildren = props.hasChildren,
27
+ nodeData = props.nodeData,
28
+ focus = props.focus,
29
+ label = props.label,
30
+ uncheckable = props.uncheckable,
31
+ checkState = props.checkState,
32
+ value = props.value,
33
+ treeItemRef = props.treeItemRef,
34
+ onExpand = props.onExpand,
35
+ onSelect = props.onSelect,
36
+ rest = _objectWithoutPropertiesLoose(props, ["as", "style", "className", "classPrefix", "visible", "layer", "disabled", "allUncheckable", "loading", "expanded", "hasChildren", "nodeData", "focus", "label", "uncheckable", "checkState", "value", "treeItemRef", "onExpand", "onSelect"]);
37
+ var _useCustom = useCustom(),
38
+ rtl = _useCustom.rtl;
39
+ var _useTreeContextProps = useTreeContextProps(),
40
+ renderTreeNode = _useTreeContextProps.renderTreeNode,
41
+ virtualized = _useTreeContextProps.virtualized;
42
+ var _useClassNames = useClassNames(classPrefix),
43
+ prefix = _useClassNames.prefix,
44
+ merge = _useClassNames.merge,
45
+ withClassPrefix = _useClassNames.withClassPrefix;
46
+ var labelStr = useMemo(function () {
47
+ return stringifyReactNode(label);
48
+ }, [label]);
49
+ var handleExpand = useEventCallback(function (event) {
50
+ var _event$nativeEvent, _event$nativeEvent$st;
51
+ // stop propagation when using custom loading icon
52
+ event === null || event === void 0 ? void 0 : (_event$nativeEvent = event.nativeEvent) === null || _event$nativeEvent === void 0 ? void 0 : (_event$nativeEvent$st = _event$nativeEvent.stopImmediatePropagation) === null || _event$nativeEvent$st === void 0 ? void 0 : _event$nativeEvent$st.call(_event$nativeEvent);
53
+ onExpand === null || onExpand === void 0 ? void 0 : onExpand(nodeData, expanded);
54
+ });
55
+ var handleSelect = useEventCallback(function (_value, event) {
56
+ var isChecked = false;
57
+ if (checkState === CHECK_STATE.UNCHECK || checkState === CHECK_STATE.INDETERMINATE) {
58
+ isChecked = true;
59
+ }
60
+ if (checkState === CHECK_STATE.CHECK) {
61
+ isChecked = false;
62
+ }
63
+ var nextNodeData = _extends({}, nodeData, {
64
+ check: isChecked
65
+ });
66
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(nextNodeData, event);
67
+ });
68
+ var classes = merge(className, withClassPrefix({
69
+ disabled: disabled,
70
+ 'all-uncheckable': !!allUncheckable,
71
+ 'text-muted': disabled,
72
+ focus: focus
73
+ }));
74
+ var styles = virtualized ? _extends({}, style, indentTreeNode(rtl, layer - 1)) : style;
75
+ var itemRef = useFoucsVirtualListItem(focus);
76
+ return visible ? /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
77
+ style: styles,
78
+ className: classes,
79
+ ref: ref
80
+ }), /*#__PURE__*/React.createElement(TreeNodeToggle, {
81
+ "aria-label": (expanded ? 'Collapse' : 'Expand') + (" " + labelStr),
82
+ data: nodeData,
83
+ expanded: expanded,
84
+ loading: loading,
85
+ hasChildren: hasChildren,
86
+ onClick: handleExpand
87
+ }), /*#__PURE__*/React.createElement(ListCheckItem, {
88
+ as: "div",
89
+ role: "treeitem",
90
+ ref: mergeRefs(itemRef, treeItemRef),
91
+ "aria-label": labelStr,
92
+ "aria-expanded": expanded,
93
+ "aria-checked": checkState === CHECK_STATE.CHECK,
94
+ "aria-selected": focus,
95
+ "aria-disabled": disabled,
96
+ "aria-level": layer,
97
+ "data-layer": layer,
98
+ active: checkState === CHECK_STATE.CHECK,
99
+ indeterminate: checkState === CHECK_STATE.INDETERMINATE,
100
+ focus: focus,
101
+ checkable: !uncheckable,
102
+ disabled: disabled,
103
+ value: nodeData.refKey || value,
104
+ className: prefix('content'),
105
+ title: labelStr,
106
+ onSelect: handleSelect
107
+ }, typeof renderTreeNode === 'function' ? renderTreeNode(nodeData) : label)) : null;
108
+ });
109
+ CheckTreeNode.displayName = 'CheckTreeNode';
110
+ export default CheckTreeNode;
@@ -0,0 +1,70 @@
1
+ import React from 'react';
2
+ import type { RsRefForwardingComponent, ToArray, DataProps } from '../@types/common';
3
+ import type { TreeNode, TreeNodeMap, TreeViewBaseProps } from '../Tree/types';
4
+ /**
5
+ * Props for the CheckTreeView component.
6
+ */
7
+ export interface CheckTreeViewProps<V = (string | number)[]> extends TreeViewBaseProps<V>, DataProps<TreeNode> {
8
+ /**
9
+ * Selected value.
10
+ */
11
+ value?: V;
12
+ /**
13
+ * Whether using virtualized list.
14
+ */
15
+ virtualized?: boolean;
16
+ /**
17
+ * Virtualized list ref object.
18
+ */
19
+ listRef?: React.RefObject<any>;
20
+ /**
21
+ * Searchbox input ref object.
22
+ */
23
+ searchInputRef?: React.RefObject<HTMLInputElement>;
24
+ /**
25
+ * Whether display search input box.
26
+ */
27
+ searchable?: boolean;
28
+ /**
29
+ * Tree node cascade.
30
+ */
31
+ cascade?: boolean;
32
+ /**
33
+ * Set the option value for the check box not to be rendered.
34
+ */
35
+ uncheckableItemValues?: V;
36
+ /**
37
+ * Disabled tree node.
38
+ */
39
+ disabledItemValues?: ToArray<NonNullable<V>>;
40
+ /**
41
+ * Called when scrolling.
42
+ */
43
+ onScroll?: (event: React.SyntheticEvent) => void;
44
+ /**
45
+ * Called after the value has been changed.
46
+ */
47
+ onChange?: (value: V, event: React.SyntheticEvent) => void;
48
+ }
49
+ interface CheckTreeViewInnerProps<V = (string | number)[]> extends Omit<CheckTreeViewProps<V>, 'onExpand'> {
50
+ /**
51
+ * Loading node values.
52
+ */
53
+ loadingNodeValues?: V;
54
+ /**
55
+ * Flattened nodes.
56
+ */
57
+ flattenedNodes?: TreeNodeMap;
58
+ /**
59
+ * Callback function triggered when an item is focused.
60
+ */
61
+ onFocusItem?: (value?: TreeNode['value']) => void;
62
+ /**
63
+ * A callback function that is called when a node is expanded.
64
+ *
65
+ * @param nodeData - The data of the expanded node.
66
+ */
67
+ onExpand?: (nodeData: TreeNode, expanded?: boolean) => void;
68
+ }
69
+ declare const CheckTreeView: RsRefForwardingComponent<'div', CheckTreeViewInnerProps>;
70
+ export default CheckTreeView;