rsuite 5.60.2 → 5.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) hide show
  1. package/Accordion/styles/index.css +4 -4
  2. package/AutoComplete/styles/index.css +58 -22
  3. package/Button/styles/index.css +12 -8
  4. package/Button/styles/mixin.less +1 -1
  5. package/CHANGELOG.md +25 -0
  6. package/Calendar/styles/index.css +16 -15
  7. package/CascadeTree/styles/index.css +11 -9
  8. package/CascadeTree/styles/index.less +7 -0
  9. package/CascadeTree/styles/search.less +0 -10
  10. package/Cascader/styles/index.css +60 -31
  11. package/CheckPicker/styles/index.css +59 -27
  12. package/CheckPicker/styles/index.less +3 -3
  13. package/CheckTree/styles/index.css +160 -134
  14. package/CheckTree/styles/index.less +141 -1
  15. package/CheckTreePicker/styles/index.css +170 -126
  16. package/CheckTreePicker/styles/index.less +8 -181
  17. package/Checkbox/styles/index.css +7 -8
  18. package/Checkbox/styles/index.less +1 -5
  19. package/DateInput/styles/index.css +4 -4
  20. package/DatePicker/styles/index.css +62 -26
  21. package/DateRangeInput/styles/index.css +4 -4
  22. package/DateRangePicker/styles/index.css +67 -26
  23. package/DateRangePicker/styles/index.less +2 -0
  24. package/Dropdown/styles/index.css +14 -13
  25. package/Highlight/package.json +7 -0
  26. package/Highlight/styles/index.css +8 -0
  27. package/Highlight/styles/index.less +6 -0
  28. package/IconButton/styles/index.css +11 -10
  29. package/Input/styles/index.css +4 -4
  30. package/InputGroup/styles/index.css +18 -17
  31. package/InputGroup/styles/index.less +1 -1
  32. package/InputNumber/styles/index.css +19 -18
  33. package/InputPicker/styles/index.css +58 -22
  34. package/MultiCascadeTree/styles/index.css +61 -36
  35. package/MultiCascadeTree/styles/index.less +1 -1
  36. package/MultiCascader/styles/index.css +704 -679
  37. package/MultiCascader/styles/index.less +0 -1
  38. package/Nav/styles/index.css +15 -14
  39. package/Navbar/styles/index.css +14 -13
  40. package/Pagination/styles/index.css +62 -26
  41. package/Panel/styles/index.css +4 -4
  42. package/Placeholder/styles/index.css +2 -3
  43. package/Placeholder/styles/index.less +2 -3
  44. package/README.md +21 -39
  45. package/Radio/styles/index.css +7 -7
  46. package/Radio/styles/index.less +1 -5
  47. package/RangeSlider/styles/index.css +1 -1
  48. package/Rate/styles/index.css +1 -1
  49. package/Rate/styles/index.less +1 -1
  50. package/SelectPicker/styles/index.css +58 -22
  51. package/Slider/styles/index.css +1 -1
  52. package/Slider/styles/index.less +1 -1
  53. package/Steps/styles/index.css +6 -1
  54. package/Steps/styles/index.less +2 -1
  55. package/Tabs/styles/index.css +15 -14
  56. package/TagInput/styles/index.css +59 -27
  57. package/TagPicker/styles/index.css +59 -27
  58. package/Toggle/styles/index.css +10 -7
  59. package/Tree/styles/indent-line.less +8 -0
  60. package/Tree/styles/index.css +140 -141
  61. package/Tree/styles/index.less +188 -1
  62. package/Tree/styles/toggle.less +36 -0
  63. package/TreePicker/styles/index.css +142 -134
  64. package/TreePicker/styles/index.less +4 -234
  65. package/Uploader/styles/index.css +12 -11
  66. package/cjs/@types/common.d.ts +41 -4
  67. package/cjs/AutoComplete/AutoComplete.js +2 -1
  68. package/cjs/CascadeTree/CascadeTree.js +8 -7
  69. package/cjs/CascadeTree/SearchView.js +7 -14
  70. package/cjs/CascadeTree/hooks/usePaths.js +4 -4
  71. package/cjs/CascadeTree/hooks/useSearch.js +2 -1
  72. package/cjs/CascadeTree/utils.d.ts +0 -11
  73. package/cjs/CascadeTree/utils.js +0 -23
  74. package/cjs/Cascader/Cascader.js +17 -16
  75. package/cjs/CheckPicker/CheckPicker.js +26 -29
  76. package/cjs/CheckTree/CheckTree.d.ts +16 -0
  77. package/cjs/CheckTree/CheckTree.js +112 -0
  78. package/cjs/CheckTree/CheckTreeNode.d.ts +72 -0
  79. package/cjs/CheckTree/CheckTreeNode.js +117 -0
  80. package/cjs/CheckTree/CheckTreeView.d.ts +70 -0
  81. package/cjs/CheckTree/CheckTreeView.js +310 -0
  82. package/cjs/CheckTree/hooks/useTreeCheckState.d.ts +10 -0
  83. package/cjs/CheckTree/hooks/useTreeCheckState.js +93 -0
  84. package/cjs/CheckTree/hooks/useTreeNodeProps.d.ts +22 -0
  85. package/cjs/CheckTree/hooks/useTreeNodeProps.js +59 -0
  86. package/cjs/CheckTree/hooks/useTreeValue.d.ts +5 -0
  87. package/cjs/CheckTree/hooks/useTreeValue.js +21 -0
  88. package/cjs/CheckTree/index.d.ts +2 -14
  89. package/cjs/CheckTree/index.js +2 -23
  90. package/cjs/CheckTree/utils.d.ts +53 -0
  91. package/cjs/{CheckTreePicker → CheckTree}/utils.js +76 -26
  92. package/cjs/CheckTreePicker/CheckTreePicker.d.ts +30 -12
  93. package/cjs/CheckTreePicker/CheckTreePicker.js +153 -603
  94. package/cjs/CheckTreePicker/hooks/useFocusState.d.ts +16 -0
  95. package/cjs/CheckTreePicker/hooks/useFocusState.js +42 -0
  96. package/cjs/DatePicker/DatePicker.d.ts +4 -0
  97. package/cjs/DatePicker/DatePicker.js +20 -5
  98. package/cjs/DatePicker/types.d.ts +0 -4
  99. package/cjs/DateRangePicker/DateRangePicker.d.ts +51 -23
  100. package/cjs/DateRangePicker/DateRangePicker.js +71 -51
  101. package/cjs/DateRangePicker/hooks/useDateDisabled.d.ts +16 -0
  102. package/cjs/DateRangePicker/hooks/useDateDisabled.js +31 -0
  103. package/cjs/DateRangePicker/types.d.ts +1 -0
  104. package/cjs/Highlight/Highlight.d.ts +14 -0
  105. package/cjs/Highlight/Highlight.js +58 -0
  106. package/cjs/Highlight/index.d.ts +3 -0
  107. package/cjs/Highlight/index.js +9 -0
  108. package/cjs/Highlight/utils/highlightText.d.ts +5 -0
  109. package/cjs/Highlight/utils/highlightText.js +29 -0
  110. package/cjs/InputPicker/InputPicker.js +37 -41
  111. package/cjs/MultiCascadeTree/SearchView.js +6 -14
  112. package/cjs/MultiCascadeTree/hooks/useCascadeValue.js +15 -1
  113. package/cjs/MultiCascadeTree/hooks/useColumnData.js +2 -2
  114. package/cjs/MultiCascadeTree/hooks/useFlattenData.js +3 -3
  115. package/cjs/MultiCascadeTree/hooks/useSearch.js +2 -1
  116. package/cjs/MultiCascadeTree/utils.d.ts +4 -4
  117. package/cjs/MultiCascadeTree/utils.js +20 -11
  118. package/cjs/MultiCascader/MultiCascader.js +12 -12
  119. package/cjs/SelectPicker/SelectPicker.js +2 -6
  120. package/cjs/Tree/IndentLine.d.ts +3 -0
  121. package/cjs/Tree/IndentLine.js +18 -0
  122. package/cjs/Tree/Tree.d.ts +4 -92
  123. package/cjs/Tree/Tree.js +79 -20
  124. package/cjs/Tree/TreeNode.d.ts +101 -0
  125. package/cjs/Tree/TreeNode.js +147 -0
  126. package/cjs/Tree/TreeNodeToggle.d.ts +9 -0
  127. package/cjs/Tree/TreeNodeToggle.js +56 -0
  128. package/cjs/Tree/TreeProvider.d.ts +52 -0
  129. package/cjs/Tree/TreeProvider.js +84 -0
  130. package/cjs/Tree/TreeView.d.ts +68 -0
  131. package/cjs/Tree/TreeView.js +305 -0
  132. package/cjs/Tree/hooks/useExpandTree.d.ts +60 -0
  133. package/cjs/Tree/hooks/useExpandTree.js +77 -0
  134. package/cjs/Tree/hooks/useFlattenTree.d.ts +42 -0
  135. package/cjs/Tree/hooks/useFlattenTree.js +98 -0
  136. package/cjs/Tree/hooks/useFocusTree.d.ts +24 -0
  137. package/cjs/Tree/hooks/useFocusTree.js +158 -0
  138. package/cjs/Tree/hooks/useForceUpdate.d.ts +2 -0
  139. package/cjs/Tree/hooks/useForceUpdate.js +16 -0
  140. package/cjs/Tree/hooks/useTreeDrag.d.ts +32 -0
  141. package/cjs/Tree/hooks/useTreeDrag.js +268 -0
  142. package/cjs/Tree/hooks/useTreeNodeProps.d.ts +29 -0
  143. package/cjs/Tree/hooks/useTreeNodeProps.js +83 -0
  144. package/cjs/Tree/hooks/useTreeNodeRefs.d.ts +6 -0
  145. package/cjs/Tree/hooks/useTreeNodeRefs.js +22 -0
  146. package/cjs/Tree/hooks/useTreeSearch.d.ts +18 -0
  147. package/cjs/Tree/hooks/useTreeSearch.js +74 -0
  148. package/cjs/Tree/hooks/useTreeWithChildren.d.ts +14 -0
  149. package/cjs/Tree/hooks/useTreeWithChildren.js +64 -0
  150. package/cjs/Tree/hooks/useVirtualizedTreeData.d.ts +7 -0
  151. package/cjs/Tree/hooks/useVirtualizedTreeData.js +82 -0
  152. package/cjs/Tree/types.d.ts +257 -0
  153. package/cjs/Tree/types.js +33 -0
  154. package/cjs/Tree/utils/flattenTree.d.ts +25 -0
  155. package/cjs/Tree/utils/flattenTree.js +95 -0
  156. package/cjs/Tree/utils/focusableTree.d.ts +55 -0
  157. package/cjs/Tree/utils/focusableTree.js +157 -0
  158. package/cjs/Tree/utils/formatNodeRefKey.d.ts +4 -0
  159. package/cjs/Tree/utils/formatNodeRefKey.js +11 -0
  160. package/cjs/Tree/utils/getExpandItemValues.d.ts +11 -0
  161. package/cjs/Tree/utils/getExpandItemValues.js +21 -0
  162. package/cjs/Tree/utils/getNodeParentKeys.d.ts +5 -0
  163. package/cjs/Tree/utils/getNodeParentKeys.js +21 -0
  164. package/cjs/Tree/utils/getTreeActiveNode.d.ts +5 -0
  165. package/cjs/Tree/utils/getTreeActiveNode.js +21 -0
  166. package/cjs/Tree/utils/hasVisibleChildren.d.ts +5 -0
  167. package/cjs/Tree/utils/hasVisibleChildren.js +16 -0
  168. package/cjs/Tree/utils/indentTreeNode.d.ts +3 -0
  169. package/cjs/Tree/utils/indentTreeNode.js +18 -0
  170. package/cjs/Tree/utils/index.d.ts +11 -0
  171. package/cjs/Tree/utils/index.js +35 -0
  172. package/cjs/Tree/utils/isExpand.d.ts +6 -0
  173. package/cjs/Tree/utils/isExpand.js +14 -0
  174. package/cjs/Tree/utils/isSearching.d.ts +1 -0
  175. package/cjs/Tree/utils/isSearching.js +10 -0
  176. package/cjs/Tree/utils/treeKeyboardInteractions.d.ts +21 -0
  177. package/cjs/Tree/utils/treeKeyboardInteractions.js +49 -0
  178. package/cjs/TreePicker/TreePicker.d.ts +27 -21
  179. package/cjs/TreePicker/TreePicker.js +155 -575
  180. package/cjs/TreePicker/hooks/useFocusState.d.ts +20 -0
  181. package/cjs/TreePicker/hooks/useFocusState.js +53 -0
  182. package/cjs/index.d.ts +2 -0
  183. package/cjs/index.js +3 -1
  184. package/cjs/internals/Picker/Listbox.d.ts +40 -10
  185. package/cjs/internals/Picker/Listbox.js +21 -16
  186. package/cjs/internals/Picker/PickerIndicator.d.ts +2 -1
  187. package/cjs/internals/Picker/PickerIndicator.js +7 -3
  188. package/cjs/internals/Picker/hooks/useFocusItemValue.js +4 -4
  189. package/cjs/internals/Picker/hooks/usePickerRef.d.ts +1 -4
  190. package/cjs/internals/Picker/hooks/usePickerRef.js +3 -20
  191. package/cjs/internals/Picker/index.d.ts +0 -1
  192. package/cjs/internals/Picker/index.js +1 -4
  193. package/cjs/internals/Picker/utils.js +12 -12
  194. package/cjs/internals/{Picker → Tree}/TreeView.js +1 -1
  195. package/cjs/internals/Tree/index.d.ts +1 -0
  196. package/cjs/internals/Tree/index.js +8 -0
  197. package/cjs/internals/Tree/utils/filterNodesOfTree.d.ts +5 -0
  198. package/cjs/internals/Tree/utils/filterNodesOfTree.js +31 -0
  199. package/cjs/internals/Tree/utils/findNodeOfTree.d.ts +1 -0
  200. package/cjs/internals/Tree/utils/findNodeOfTree.js +26 -0
  201. package/cjs/internals/Tree/utils/getParentMap.d.ts +15 -0
  202. package/cjs/internals/Tree/utils/getParentMap.js +52 -0
  203. package/cjs/internals/Tree/utils/getPathTowardsItem.d.ts +4 -0
  204. package/cjs/internals/Tree/utils/getPathTowardsItem.js +16 -0
  205. package/cjs/internals/Tree/utils/index.d.ts +4 -0
  206. package/cjs/internals/Tree/utils/index.js +14 -0
  207. package/cjs/internals/Windowing/List.d.ts +1 -0
  208. package/cjs/internals/Windowing/List.js +5 -1
  209. package/cjs/internals/Windowing/index.d.ts +1 -1
  210. package/cjs/internals/Windowing/index.js +4 -2
  211. package/cjs/internals/hooks/index.d.ts +1 -0
  212. package/cjs/internals/hooks/index.js +8 -0
  213. package/cjs/internals/hooks/useFoucsVirtualListItem.d.ts +7 -0
  214. package/cjs/internals/hooks/useFoucsVirtualListItem.js +26 -0
  215. package/cjs/{utils → internals/utils}/getSafeRegExpString.d.ts +1 -1
  216. package/cjs/{utils → internals/utils}/getSafeRegExpString.js +1 -1
  217. package/cjs/internals/utils/index.d.ts +2 -0
  218. package/cjs/internals/utils/index.js +9 -0
  219. package/cjs/internals/utils/stringifyReactNode.d.ts +2 -0
  220. package/cjs/internals/utils/stringifyReactNode.js +17 -0
  221. package/cjs/utils/constants.d.ts +0 -2
  222. package/cjs/utils/constants.js +1 -6
  223. package/cjs/utils/getDataGroupBy.js +3 -3
  224. package/cjs/utils/index.d.ts +0 -3
  225. package/cjs/utils/index.js +1 -10
  226. package/cjs/utils/useIsomorphicLayoutEffect.d.ts +2 -2
  227. package/dist/rsuite-no-reset-rtl.css +292 -300
  228. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  229. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  230. package/dist/rsuite-no-reset.css +294 -304
  231. package/dist/rsuite-no-reset.min.css +1 -1
  232. package/dist/rsuite-no-reset.min.css.map +1 -1
  233. package/dist/rsuite-rtl.css +293 -301
  234. package/dist/rsuite-rtl.min.css +1 -1
  235. package/dist/rsuite-rtl.min.css.map +1 -1
  236. package/dist/rsuite.css +295 -305
  237. package/dist/rsuite.js +611 -116
  238. package/dist/rsuite.js.map +1 -1
  239. package/dist/rsuite.min.css +1 -1
  240. package/dist/rsuite.min.css.map +1 -1
  241. package/dist/rsuite.min.js +1 -1
  242. package/dist/rsuite.min.js.map +1 -1
  243. package/esm/@types/common.d.ts +41 -4
  244. package/esm/AutoComplete/AutoComplete.js +2 -1
  245. package/esm/CascadeTree/CascadeTree.js +2 -1
  246. package/esm/CascadeTree/SearchView.js +6 -13
  247. package/esm/CascadeTree/hooks/usePaths.js +1 -1
  248. package/esm/CascadeTree/hooks/useSearch.js +2 -1
  249. package/esm/CascadeTree/utils.d.ts +0 -11
  250. package/esm/CascadeTree/utils.js +0 -22
  251. package/esm/Cascader/Cascader.js +2 -1
  252. package/esm/CheckPicker/CheckPicker.js +4 -7
  253. package/esm/CheckTree/CheckTree.d.ts +16 -0
  254. package/esm/CheckTree/CheckTree.js +105 -0
  255. package/esm/CheckTree/CheckTreeNode.d.ts +72 -0
  256. package/esm/CheckTree/CheckTreeNode.js +110 -0
  257. package/esm/CheckTree/CheckTreeView.d.ts +70 -0
  258. package/esm/CheckTree/CheckTreeView.js +304 -0
  259. package/esm/CheckTree/hooks/useTreeCheckState.d.ts +10 -0
  260. package/esm/CheckTree/hooks/useTreeCheckState.js +87 -0
  261. package/esm/CheckTree/hooks/useTreeNodeProps.d.ts +22 -0
  262. package/esm/CheckTree/hooks/useTreeNodeProps.js +52 -0
  263. package/esm/CheckTree/hooks/useTreeValue.d.ts +5 -0
  264. package/esm/CheckTree/hooks/useTreeValue.js +16 -0
  265. package/esm/CheckTree/index.d.ts +2 -14
  266. package/esm/CheckTree/index.js +1 -21
  267. package/esm/CheckTree/utils.d.ts +53 -0
  268. package/esm/{CheckTreePicker → CheckTree}/utils.js +72 -22
  269. package/esm/CheckTreePicker/CheckTreePicker.d.ts +30 -12
  270. package/esm/CheckTreePicker/CheckTreePicker.js +156 -607
  271. package/esm/CheckTreePicker/hooks/useFocusState.d.ts +16 -0
  272. package/esm/CheckTreePicker/hooks/useFocusState.js +37 -0
  273. package/esm/DatePicker/DatePicker.d.ts +4 -0
  274. package/esm/DatePicker/DatePicker.js +20 -5
  275. package/esm/DatePicker/types.d.ts +0 -4
  276. package/esm/DateRangePicker/DateRangePicker.d.ts +51 -23
  277. package/esm/DateRangePicker/DateRangePicker.js +71 -51
  278. package/esm/DateRangePicker/hooks/useDateDisabled.d.ts +16 -0
  279. package/esm/DateRangePicker/hooks/useDateDisabled.js +26 -0
  280. package/esm/DateRangePicker/types.d.ts +1 -0
  281. package/esm/Highlight/Highlight.d.ts +14 -0
  282. package/esm/Highlight/Highlight.js +52 -0
  283. package/esm/Highlight/index.d.ts +3 -0
  284. package/esm/Highlight/index.js +3 -0
  285. package/esm/Highlight/utils/highlightText.d.ts +5 -0
  286. package/esm/Highlight/utils/highlightText.js +25 -0
  287. package/esm/InputPicker/InputPicker.js +3 -7
  288. package/esm/MultiCascadeTree/SearchView.js +6 -14
  289. package/esm/MultiCascadeTree/hooks/useCascadeValue.js +15 -1
  290. package/esm/MultiCascadeTree/hooks/useColumnData.js +1 -1
  291. package/esm/MultiCascadeTree/hooks/useFlattenData.js +1 -1
  292. package/esm/MultiCascadeTree/hooks/useSearch.js +2 -1
  293. package/esm/MultiCascadeTree/utils.d.ts +4 -4
  294. package/esm/MultiCascadeTree/utils.js +18 -9
  295. package/esm/MultiCascader/MultiCascader.js +1 -1
  296. package/esm/SelectPicker/SelectPicker.js +2 -6
  297. package/esm/Tree/IndentLine.d.ts +3 -0
  298. package/esm/Tree/IndentLine.js +12 -0
  299. package/esm/Tree/Tree.d.ts +4 -92
  300. package/esm/Tree/Tree.js +78 -18
  301. package/esm/Tree/TreeNode.d.ts +101 -0
  302. package/esm/Tree/TreeNode.js +141 -0
  303. package/esm/Tree/TreeNodeToggle.d.ts +9 -0
  304. package/esm/Tree/TreeNodeToggle.js +50 -0
  305. package/esm/Tree/TreeProvider.d.ts +52 -0
  306. package/esm/Tree/TreeProvider.js +74 -0
  307. package/esm/Tree/TreeView.d.ts +68 -0
  308. package/esm/Tree/TreeView.js +299 -0
  309. package/esm/Tree/hooks/useExpandTree.d.ts +60 -0
  310. package/esm/Tree/hooks/useExpandTree.js +70 -0
  311. package/esm/Tree/hooks/useFlattenTree.d.ts +42 -0
  312. package/esm/Tree/hooks/useFlattenTree.js +92 -0
  313. package/esm/Tree/hooks/useFocusTree.d.ts +24 -0
  314. package/esm/Tree/hooks/useFocusTree.js +153 -0
  315. package/esm/Tree/hooks/useForceUpdate.d.ts +2 -0
  316. package/esm/Tree/hooks/useForceUpdate.js +11 -0
  317. package/esm/Tree/hooks/useTreeDrag.d.ts +32 -0
  318. package/esm/Tree/hooks/useTreeDrag.js +264 -0
  319. package/esm/Tree/hooks/useTreeNodeProps.d.ts +29 -0
  320. package/esm/Tree/hooks/useTreeNodeProps.js +76 -0
  321. package/esm/Tree/hooks/useTreeNodeRefs.d.ts +6 -0
  322. package/esm/Tree/hooks/useTreeNodeRefs.js +18 -0
  323. package/esm/Tree/hooks/useTreeSearch.d.ts +18 -0
  324. package/esm/Tree/hooks/useTreeSearch.js +69 -0
  325. package/esm/Tree/hooks/useTreeWithChildren.d.ts +14 -0
  326. package/esm/Tree/hooks/useTreeWithChildren.js +59 -0
  327. package/esm/Tree/hooks/useVirtualizedTreeData.d.ts +7 -0
  328. package/esm/Tree/hooks/useVirtualizedTreeData.js +77 -0
  329. package/esm/Tree/types.d.ts +257 -0
  330. package/esm/Tree/types.js +30 -0
  331. package/esm/Tree/utils/flattenTree.d.ts +25 -0
  332. package/esm/Tree/utils/flattenTree.js +88 -0
  333. package/esm/Tree/utils/focusableTree.d.ts +55 -0
  334. package/esm/Tree/utils/focusableTree.js +146 -0
  335. package/esm/Tree/utils/formatNodeRefKey.d.ts +4 -0
  336. package/esm/Tree/utils/formatNodeRefKey.js +7 -0
  337. package/esm/Tree/utils/getExpandItemValues.d.ts +11 -0
  338. package/esm/Tree/utils/getExpandItemValues.js +17 -0
  339. package/esm/Tree/utils/getNodeParentKeys.d.ts +5 -0
  340. package/esm/Tree/utils/getNodeParentKeys.js +17 -0
  341. package/esm/Tree/utils/getTreeActiveNode.d.ts +5 -0
  342. package/esm/Tree/utils/getTreeActiveNode.js +16 -0
  343. package/esm/Tree/utils/hasVisibleChildren.d.ts +5 -0
  344. package/esm/Tree/utils/hasVisibleChildren.js +12 -0
  345. package/esm/Tree/utils/indentTreeNode.d.ts +3 -0
  346. package/esm/Tree/utils/indentTreeNode.js +14 -0
  347. package/esm/Tree/utils/index.d.ts +11 -0
  348. package/esm/Tree/utils/index.js +14 -0
  349. package/esm/Tree/utils/isExpand.d.ts +6 -0
  350. package/esm/Tree/utils/isExpand.js +11 -0
  351. package/esm/Tree/utils/isSearching.d.ts +1 -0
  352. package/esm/Tree/utils/isSearching.js +5 -0
  353. package/esm/Tree/utils/treeKeyboardInteractions.d.ts +21 -0
  354. package/esm/Tree/utils/treeKeyboardInteractions.js +43 -0
  355. package/esm/TreePicker/TreePicker.d.ts +27 -21
  356. package/esm/TreePicker/TreePicker.js +158 -579
  357. package/esm/TreePicker/hooks/useFocusState.d.ts +20 -0
  358. package/esm/TreePicker/hooks/useFocusState.js +48 -0
  359. package/esm/index.d.ts +2 -0
  360. package/esm/index.js +1 -0
  361. package/esm/internals/Picker/Listbox.d.ts +40 -10
  362. package/esm/internals/Picker/Listbox.js +22 -16
  363. package/esm/internals/Picker/PickerIndicator.d.ts +2 -1
  364. package/esm/internals/Picker/PickerIndicator.js +7 -3
  365. package/esm/internals/Picker/hooks/useFocusItemValue.js +1 -1
  366. package/esm/internals/Picker/hooks/usePickerRef.d.ts +1 -4
  367. package/esm/internals/Picker/hooks/usePickerRef.js +3 -20
  368. package/esm/internals/Picker/index.d.ts +0 -1
  369. package/esm/internals/Picker/index.js +0 -1
  370. package/esm/internals/Picker/utils.js +1 -1
  371. package/esm/internals/{Picker → Tree}/TreeView.js +1 -1
  372. package/esm/internals/Tree/index.d.ts +1 -0
  373. package/esm/internals/Tree/index.js +2 -0
  374. package/esm/internals/Tree/utils/filterNodesOfTree.d.ts +5 -0
  375. package/esm/internals/Tree/utils/filterNodesOfTree.js +26 -0
  376. package/esm/internals/Tree/utils/findNodeOfTree.d.ts +1 -0
  377. package/esm/internals/Tree/utils/findNodeOfTree.js +22 -0
  378. package/esm/internals/Tree/utils/getParentMap.d.ts +15 -0
  379. package/esm/internals/Tree/utils/getParentMap.js +47 -0
  380. package/esm/internals/Tree/utils/getPathTowardsItem.d.ts +4 -0
  381. package/esm/internals/Tree/utils/getPathTowardsItem.js +12 -0
  382. package/esm/internals/Tree/utils/index.d.ts +4 -0
  383. package/esm/internals/Tree/utils/index.js +5 -0
  384. package/esm/internals/Windowing/List.d.ts +1 -0
  385. package/esm/internals/Windowing/List.js +3 -0
  386. package/esm/internals/Windowing/index.d.ts +1 -1
  387. package/esm/internals/Windowing/index.js +1 -1
  388. package/esm/internals/hooks/index.d.ts +1 -0
  389. package/esm/internals/hooks/index.js +2 -0
  390. package/esm/internals/hooks/useFoucsVirtualListItem.d.ts +7 -0
  391. package/esm/internals/hooks/useFoucsVirtualListItem.js +22 -0
  392. package/esm/{utils → internals/utils}/getSafeRegExpString.d.ts +1 -1
  393. package/esm/{utils → internals/utils}/getSafeRegExpString.js +1 -1
  394. package/esm/internals/utils/index.d.ts +2 -0
  395. package/esm/internals/utils/index.js +3 -0
  396. package/esm/internals/utils/stringifyReactNode.d.ts +2 -0
  397. package/esm/internals/utils/stringifyReactNode.js +12 -0
  398. package/esm/utils/constants.d.ts +0 -2
  399. package/esm/utils/constants.js +0 -3
  400. package/esm/utils/getDataGroupBy.js +1 -1
  401. package/esm/utils/index.d.ts +0 -3
  402. package/esm/utils/index.js +0 -3
  403. package/esm/utils/useIsomorphicLayoutEffect.d.ts +2 -2
  404. package/internals/Picker/styles/index.less +27 -1
  405. package/package.json +1 -1
  406. package/styles/color-modes/dark.less +5 -1
  407. package/styles/color-modes/high-contrast.less +8 -2
  408. package/styles/color-modes/light.less +10 -5
  409. package/styles/index.less +1 -0
  410. package/TreePicker/styles/mixin.less +0 -7
  411. package/cjs/CheckTreePicker/CheckTreeNode.d.ts +0 -28
  412. package/cjs/CheckTreePicker/CheckTreeNode.js +0 -140
  413. package/cjs/CheckTreePicker/utils.d.ts +0 -44
  414. package/cjs/Tree/TreeContext.d.ts +0 -6
  415. package/cjs/Tree/TreeContext.js +0 -10
  416. package/cjs/TreePicker/TreeNode.d.ts +0 -36
  417. package/cjs/TreePicker/TreeNode.js +0 -174
  418. package/cjs/utils/appendTooltip.d.ts +0 -10
  419. package/cjs/utils/appendTooltip.js +0 -20
  420. package/cjs/utils/stringToObject.d.ts +0 -2
  421. package/cjs/utils/stringToObject.js +0 -19
  422. package/cjs/utils/treeUtils.d.ts +0 -304
  423. package/cjs/utils/treeUtils.js +0 -1095
  424. package/esm/CheckTreePicker/CheckTreeNode.d.ts +0 -28
  425. package/esm/CheckTreePicker/CheckTreeNode.js +0 -133
  426. package/esm/CheckTreePicker/utils.d.ts +0 -44
  427. package/esm/Tree/TreeContext.d.ts +0 -6
  428. package/esm/Tree/TreeContext.js +0 -4
  429. package/esm/TreePicker/TreeNode.d.ts +0 -36
  430. package/esm/TreePicker/TreeNode.js +0 -167
  431. package/esm/utils/appendTooltip.d.ts +0 -10
  432. package/esm/utils/appendTooltip.js +0 -15
  433. package/esm/utils/stringToObject.d.ts +0 -2
  434. package/esm/utils/stringToObject.js +0 -14
  435. package/esm/utils/treeUtils.d.ts +0 -304
  436. package/esm/utils/treeUtils.js +0 -1043
  437. /package/cjs/internals/{Picker → Tree}/TreeView.d.ts +0 -0
  438. /package/esm/internals/{Picker → Tree}/TreeView.d.ts +0 -0
@@ -0,0 +1,304 @@
1
+ 'use client';
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
+ import React, { useEffect, useMemo } from 'react';
5
+ import isNil from 'lodash/isNil';
6
+ import { List, AutoSizer, defaultItemSize } from '../internals/Windowing';
7
+ import CheckTreeNode from './CheckTreeNode';
8
+ import IndentLine from '../Tree/IndentLine';
9
+ import { useCustom, useClassNames, useEventCallback } from '../utils';
10
+ import { getPathTowardsItem, getKeyParentMap } from '../internals/Tree/utils';
11
+ import { onMenuKeyDown } from '../internals/Picker';
12
+ import { TreeView } from '../internals/Tree';
13
+ import SearchBox from '../internals/SearchBox';
14
+ import { hasGrandchild, isEveryFirstLevelNodeUncheckable, getFormattedTree, isNodeUncheckable } from './utils';
15
+ import { hasVisibleChildren, getActiveItem, isExpand } from '../Tree/utils';
16
+ import useTreeSearch from '../Tree/hooks/useTreeSearch';
17
+ import useFocusTree from '../Tree/hooks/useFocusTree';
18
+ import useVirtualizedTreeData from '../Tree/hooks/useVirtualizedTreeData';
19
+ import useTreeCheckState from './hooks/useTreeCheckState';
20
+ import useTreeNodeProps from './hooks/useTreeNodeProps';
21
+ import { useItemDataKeys } from '../Tree/TreeProvider';
22
+
23
+ /**
24
+ * Props for the CheckTreeView component.
25
+ */
26
+
27
+ var CheckTreeView = /*#__PURE__*/React.forwardRef(function (props, ref) {
28
+ var _merge2;
29
+ var _props$as = props.as,
30
+ Component = _props$as === void 0 ? 'div' : _props$as,
31
+ className = props.className,
32
+ _props$classPrefix = props.classPrefix,
33
+ classPrefix = _props$classPrefix === void 0 ? 'check-tree' : _props$classPrefix,
34
+ _props$cascade = props.cascade,
35
+ cascade = _props$cascade === void 0 ? true : _props$cascade,
36
+ _props$data = props.data,
37
+ data = _props$data === void 0 ? [] : _props$data,
38
+ _props$disabledItemVa = props.disabledItemValues,
39
+ disabledItemValues = _props$disabledItemVa === void 0 ? [] : _props$disabledItemVa,
40
+ _props$expandItemValu = props.expandItemValues,
41
+ expandItemValues = _props$expandItemValu === void 0 ? [] : _props$expandItemValu,
42
+ _props$height = props.height,
43
+ height = _props$height === void 0 ? 360 : _props$height,
44
+ overrideLocale = props.locale,
45
+ listProps = props.listProps,
46
+ listRef = props.listRef,
47
+ style = props.style,
48
+ searchKeyword = props.searchKeyword,
49
+ showIndentLine = props.showIndentLine,
50
+ searchable = props.searchable,
51
+ searchInputRef = props.searchInputRef,
52
+ _props$uncheckableIte = props.uncheckableItemValues,
53
+ uncheckableItemValues = _props$uncheckableIte === void 0 ? [] : _props$uncheckableIte,
54
+ _props$virtualized = props.virtualized,
55
+ virtualized = _props$virtualized === void 0 ? false : _props$virtualized,
56
+ _props$loadingNodeVal = props.loadingNodeValues,
57
+ loadingNodeValues = _props$loadingNodeVal === void 0 ? [] : _props$loadingNodeVal,
58
+ _props$flattenedNodes = props.flattenedNodes,
59
+ flattenedNodes = _props$flattenedNodes === void 0 ? {} : _props$flattenedNodes,
60
+ searchBy = props.searchBy,
61
+ onChange = props.onChange,
62
+ onSearch = props.onSearch,
63
+ onSelect = props.onSelect,
64
+ onSelectItem = props.onSelectItem,
65
+ onScroll = props.onScroll,
66
+ onExpand = props.onExpand,
67
+ onFocusItem = props.onFocusItem,
68
+ rest = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "cascade", "data", "disabledItemValues", "expandItemValues", "height", "locale", "listProps", "listRef", "style", "searchKeyword", "showIndentLine", "searchable", "searchInputRef", "uncheckableItemValues", "virtualized", "loadingNodeValues", "flattenedNodes", "searchBy", "onChange", "onSearch", "onSelect", "onSelectItem", "onScroll", "onExpand", "onFocusItem"]);
69
+ var _useCustom = useCustom('Picker', overrideLocale),
70
+ locale = _useCustom.locale;
71
+ var _useItemDataKeys = useItemDataKeys(),
72
+ childrenKey = _useItemDataKeys.childrenKey,
73
+ valueKey = _useItemDataKeys.valueKey;
74
+ var _useClassNames = useClassNames(classPrefix),
75
+ prefix = _useClassNames.prefix,
76
+ merge = _useClassNames.merge,
77
+ withClassPrefix = _useClassNames.withClassPrefix;
78
+ var _useTreeCheckState = useTreeCheckState({
79
+ cascade: cascade,
80
+ flattenedNodes: flattenedNodes,
81
+ uncheckableItemValues: uncheckableItemValues
82
+ }),
83
+ getCheckedValues = _useTreeCheckState.getCheckedValues;
84
+ var handleSearchCallback = function handleSearchCallback(value, _data, event) {
85
+ onSearch === null || onSearch === void 0 ? void 0 : onSearch(value, event);
86
+ };
87
+ var _useTreeSearch = useTreeSearch({
88
+ callback: handleSearchCallback,
89
+ data: data,
90
+ searchKeyword: searchKeyword,
91
+ searchBy: searchBy
92
+ }),
93
+ filteredData = _useTreeSearch.filteredData,
94
+ keyword = _useTreeSearch.keyword,
95
+ setFilteredData = _useTreeSearch.setFilteredData,
96
+ handleSearch = _useTreeSearch.handleSearch;
97
+ var _useFocusTree = useFocusTree({
98
+ filteredData: filteredData,
99
+ disabledItemValues: disabledItemValues,
100
+ expandItemValues: expandItemValues,
101
+ searchKeyword: keyword,
102
+ flattenedNodes: flattenedNodes,
103
+ onFocused: onFocusItem,
104
+ onExpand: onExpand
105
+ }),
106
+ focusItemValue = _useFocusTree.focusItemValue,
107
+ setFocusItemValue = _useFocusTree.setFocusItemValue,
108
+ onTreeKeydown = _useFocusTree.onTreeKeydown,
109
+ saveTreeNodeRef = _useFocusTree.saveTreeNodeRef;
110
+ var transformation = useVirtualizedTreeData(flattenedNodes, filteredData, {
111
+ cascade: cascade,
112
+ expandItemValues: expandItemValues,
113
+ searchKeyword: keyword
114
+ });
115
+
116
+ /**
117
+ * Get formatted nodes for render tree
118
+ * @params render - renderNode function. only used when virtualized setting false
119
+ */
120
+ var getFormattedNodes = function getFormattedNodes(render) {
121
+ if (virtualized) {
122
+ return transformation().filter(function (item) {
123
+ return item.visible;
124
+ });
125
+ }
126
+ return getFormattedTree(flattenedNodes, filteredData, {
127
+ childrenKey: childrenKey,
128
+ cascade: cascade
129
+ }).map(function (node) {
130
+ return render === null || render === void 0 ? void 0 : render(node, 1);
131
+ }).filter(function (item) {
132
+ return item;
133
+ });
134
+ };
135
+ var getTreeNodeProps = useTreeNodeProps({
136
+ uncheckableItemValues: uncheckableItemValues,
137
+ disabledItemValues: disabledItemValues,
138
+ loadingNodeValues: loadingNodeValues,
139
+ focusItemValue: focusItemValue,
140
+ flattenedNodes: flattenedNodes,
141
+ keyword: keyword
142
+ });
143
+ useEffect(function () {
144
+ setFilteredData(data, keyword);
145
+ }, [data, keyword, setFilteredData]);
146
+
147
+ // TODO-Doma
148
+ // Replace `getKeyParentMap` with `getParentMap`
149
+ var itemParentMap = useMemo(function () {
150
+ return getKeyParentMap(data, function (node) {
151
+ return node[valueKey];
152
+ }, function (node) {
153
+ return node[childrenKey];
154
+ });
155
+ }, [childrenKey, data, valueKey]);
156
+ var handleSelect = useEventCallback(function (node, event) {
157
+ var currentNode = node.refKey ? flattenedNodes[node.refKey] : null;
158
+ if (!node || !currentNode) {
159
+ return;
160
+ }
161
+ var checkedValues = getCheckedValues(node, !currentNode.check);
162
+ var path = getPathTowardsItem(node, function (item) {
163
+ return itemParentMap.get(item[valueKey]);
164
+ });
165
+ setFocusItemValue(node[valueKey]);
166
+ onChange === null || onChange === void 0 ? void 0 : onChange(checkedValues, event);
167
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, checkedValues, event);
168
+ onSelectItem === null || onSelectItem === void 0 ? void 0 : onSelectItem(node, path);
169
+ });
170
+ var selectActiveItem = function selectActiveItem(event) {
171
+ if (isNil(focusItemValue)) return;
172
+ var activeItem = getActiveItem(focusItemValue, flattenedNodes, valueKey);
173
+ if (!isNodeUncheckable(activeItem, {
174
+ uncheckableItemValues: uncheckableItemValues,
175
+ valueKey: valueKey
176
+ }) && activeItem !== null) {
177
+ handleSelect(activeItem, event);
178
+ }
179
+ };
180
+ var handleTreeKeyDown = useEventCallback(function (event) {
181
+ onTreeKeydown(event);
182
+ onMenuKeyDown(event, {
183
+ enter: selectActiveItem
184
+ });
185
+ });
186
+ var renderNode = function renderNode(node, layer) {
187
+ var visible = node.visible,
188
+ refKey = node.refKey,
189
+ parent = node.parent; // when searching, all nodes should be expand
190
+ var expanded = isExpand(keyword, expandItemValues.includes(node[valueKey]));
191
+ if (!visible) {
192
+ return null;
193
+ }
194
+ var children = node[childrenKey];
195
+ var hasChildren = keyword ? hasVisibleChildren(node, childrenKey) : Boolean(children);
196
+ var treeNodeProps = _extends({}, getTreeNodeProps(_extends({}, node, {
197
+ parent: parent
198
+ })), {
199
+ layer: layer,
200
+ expanded: expanded,
201
+ hasChildren: hasChildren,
202
+ onSelect: handleSelect,
203
+ onExpand: onExpand
204
+ });
205
+ if (hasChildren) {
206
+ var _merge;
207
+ layer += 1;
208
+ var childClassName = merge(prefix('node-children'), (_merge = {}, _merge[prefix('node-expanded')] = expanded, _merge));
209
+ var nodes = children || [];
210
+ return /*#__PURE__*/React.createElement("div", {
211
+ className: childClassName,
212
+ key: node[valueKey]
213
+ }, /*#__PURE__*/React.createElement(CheckTreeNode, _extends({}, treeNodeProps, {
214
+ treeItemRef: function treeItemRef(ref) {
215
+ return saveTreeNodeRef(ref, refKey);
216
+ }
217
+ })), /*#__PURE__*/React.createElement("div", {
218
+ className: prefix('group'),
219
+ role: "group"
220
+ }, nodes.map(function (child) {
221
+ return renderNode(child, layer);
222
+ }), showIndentLine && /*#__PURE__*/React.createElement(IndentLine, null)));
223
+ }
224
+ return /*#__PURE__*/React.createElement(CheckTreeNode, _extends({
225
+ key: node[valueKey],
226
+ treeItemRef: function treeItemRef(ref) {
227
+ return saveTreeNodeRef(ref, refKey);
228
+ }
229
+ }, treeNodeProps));
230
+ };
231
+ var renderVirtualListNode = function renderVirtualListNode(_ref) {
232
+ var index = _ref.index,
233
+ style = _ref.style,
234
+ data = _ref.data;
235
+ var node = data[index];
236
+ var layer = node.layer,
237
+ refKey = node.refKey,
238
+ visible = node.visible,
239
+ hasChildren = node.hasChildren,
240
+ parent = node.parent;
241
+ var expanded = isExpand(keyword, expandItemValues.includes(node[valueKey]));
242
+ var treeNodeProps = _extends({}, getTreeNodeProps(_extends({}, node, {
243
+ parent: parent
244
+ })), {
245
+ onSelect: handleSelect,
246
+ onExpand: onExpand,
247
+ expanded: expanded,
248
+ layer: layer,
249
+ hasChildren: hasChildren
250
+ });
251
+ return visible && /*#__PURE__*/React.createElement(CheckTreeNode, _extends({
252
+ style: style,
253
+ ref: function ref(_ref2) {
254
+ return saveTreeNodeRef(_ref2, refKey);
255
+ }
256
+ }, treeNodeProps));
257
+ };
258
+ var classes = merge(className, withClassPrefix({
259
+ 'without-children': !hasGrandchild(data, childrenKey),
260
+ virtualized: virtualized
261
+ }));
262
+ var formattedNodes = getFormattedNodes(renderNode);
263
+ var treeNodesClass = merge(prefix('root'), (_merge2 = {}, _merge2[prefix('all-uncheckable')] = isEveryFirstLevelNodeUncheckable(flattenedNodes, uncheckableItemValues, valueKey), _merge2));
264
+ return /*#__PURE__*/React.createElement(Component, {
265
+ ref: ref,
266
+ className: classes,
267
+ style: style
268
+ }, searchable ? /*#__PURE__*/React.createElement(SearchBox, {
269
+ placeholder: locale.searchPlaceholder,
270
+ onChange: handleSearch,
271
+ value: keyword,
272
+ inputRef: searchInputRef
273
+ }) : null, keyword && formattedNodes.length === 0 ? /*#__PURE__*/React.createElement("div", {
274
+ className: prefix('empty')
275
+ }, locale.noResultsText) : null, /*#__PURE__*/React.createElement(TreeView, _extends({}, rest, {
276
+ multiselectable: true,
277
+ treeRootClassName: treeNodesClass,
278
+ className: prefix('view'),
279
+ onScroll: onScroll,
280
+ onKeyDown: handleTreeKeyDown,
281
+ style: virtualized ? undefined : {
282
+ height: height
283
+ }
284
+ }), virtualized ? /*#__PURE__*/React.createElement(AutoSizer, {
285
+ defaultHeight: height,
286
+ style: {
287
+ width: 'auto',
288
+ height: 'auto'
289
+ },
290
+ className: prefix('virt-auto-sizer')
291
+ }, function (_ref3) {
292
+ var height = _ref3.height;
293
+ return /*#__PURE__*/React.createElement(List, _extends({
294
+ ref: listRef,
295
+ height: height,
296
+ itemSize: defaultItemSize,
297
+ itemCount: formattedNodes.length,
298
+ itemData: formattedNodes,
299
+ className: prefix('virt-list')
300
+ }, listProps), renderVirtualListNode);
301
+ }) : formattedNodes));
302
+ });
303
+ CheckTreeView.displayName = 'CheckTreeView';
304
+ export default CheckTreeView;
@@ -0,0 +1,10 @@
1
+ import type { TreeNodeMap } from '../../Tree/types';
2
+ interface Props {
3
+ cascade?: boolean;
4
+ flattenedNodes: TreeNodeMap;
5
+ uncheckableItemValues: (string | number)[];
6
+ }
7
+ declare function useTreeCheckState(props: Props): {
8
+ getCheckedValues: (...args: any[]) => any;
9
+ };
10
+ export default useTreeCheckState;
@@ -0,0 +1,87 @@
1
+ 'use client';
2
+ import { useCallback } from 'react';
3
+ import isNil from 'lodash/isNil';
4
+ import cloneDeep from 'lodash/cloneDeep';
5
+ import { useItemDataKeys } from '../../Tree/TreeProvider';
6
+ import { useEventCallback } from '../../utils';
7
+ import { isEveryChildChecked } from '../utils';
8
+ function useTreeCheckState(props) {
9
+ var cascade = props.cascade,
10
+ flattenedNodes = props.flattenedNodes,
11
+ uncheckableItemValues = props.uncheckableItemValues;
12
+ var _useItemDataKeys = useItemDataKeys(),
13
+ valueKey = _useItemDataKeys.valueKey,
14
+ childrenKey = _useItemDataKeys.childrenKey;
15
+ var checkParentNode = useEventCallback(function (nodes, node, checked) {
16
+ var currentNode = node.refKey ? nodes[node.refKey] : null;
17
+ if (cascade && currentNode) {
18
+ if (!checked) {
19
+ currentNode.check = checked;
20
+ currentNode.checkAll = checked;
21
+ } else {
22
+ if (isEveryChildChecked(currentNode, {
23
+ nodes: nodes,
24
+ childrenKey: childrenKey
25
+ })) {
26
+ currentNode.check = true;
27
+ currentNode.checkAll = true;
28
+ } else {
29
+ currentNode.check = false;
30
+ currentNode.checkAll = false;
31
+ }
32
+ }
33
+ if (currentNode.parent) {
34
+ checkParentNode(nodes, currentNode.parent, checked);
35
+ }
36
+ }
37
+ });
38
+ var checkChildNode = useEventCallback(function (nodes, node, isChecked) {
39
+ var currentNode = node.refKey ? nodes[node.refKey] : null;
40
+ if (!currentNode) {
41
+ return;
42
+ }
43
+ currentNode.check = isChecked;
44
+ if (!currentNode[childrenKey] || !currentNode[childrenKey].length || !cascade) {
45
+ currentNode.checkAll = false;
46
+ } else {
47
+ currentNode.checkAll = isChecked;
48
+ currentNode[childrenKey].forEach(function (child) {
49
+ checkChildNode(nodes, child, isChecked);
50
+ });
51
+ }
52
+ });
53
+ var getCheckedValuesByParent = useCallback(function (nodes) {
54
+ var values = [];
55
+ for (var key in nodes) {
56
+ var currentNode = nodes[key];
57
+ if (!isNil(currentNode.parent) && !isNil(currentNode.parent.refKey)) {
58
+ var parentNode = nodes[currentNode.parent.refKey];
59
+ if (currentNode.check) {
60
+ if (!(parentNode !== null && parentNode !== void 0 && parentNode.checkAll)) {
61
+ values.push(currentNode[valueKey]);
62
+ } else if (parentNode !== null && parentNode !== void 0 && parentNode.uncheckable) {
63
+ values.push(currentNode[valueKey]);
64
+ }
65
+ }
66
+ } else if (currentNode.check) {
67
+ values.push(currentNode[valueKey]);
68
+ }
69
+ }
70
+ return values;
71
+ }, [valueKey]);
72
+ var getCheckedValues = useEventCallback(function (node, isChecked) {
73
+ var nodes = cloneDeep(flattenedNodes);
74
+ checkChildNode(nodes, node, isChecked);
75
+ if (node.parent) {
76
+ checkParentNode(nodes, node.parent, isChecked);
77
+ }
78
+ var values = getCheckedValuesByParent(nodes);
79
+ return values.filter(function (v) {
80
+ return !uncheckableItemValues.includes(v);
81
+ });
82
+ });
83
+ return {
84
+ getCheckedValues: getCheckedValues
85
+ };
86
+ }
87
+ export default useTreeCheckState;
@@ -0,0 +1,22 @@
1
+ import type { TreeNode } from '../../Tree/types';
2
+ interface Props {
3
+ uncheckableItemValues: any[];
4
+ disabledItemValues: any[];
5
+ loadingNodeValues: any[];
6
+ focusItemValue: any;
7
+ flattenedNodes: any;
8
+ keyword: string;
9
+ }
10
+ declare function useTreeNodeProps(props: Props): (nodeData: TreeNode) => {
11
+ value: any;
12
+ label: any;
13
+ visible: boolean | undefined;
14
+ loading: boolean;
15
+ disabled: boolean;
16
+ nodeData: TreeNode;
17
+ checkState: import("../../utils").CheckStateType | undefined;
18
+ uncheckable: boolean;
19
+ allUncheckable: boolean;
20
+ focus: boolean;
21
+ };
22
+ export default useTreeNodeProps;
@@ -0,0 +1,52 @@
1
+ 'use client';
2
+ import React, { useCallback } from 'react';
3
+ import { isAllSiblingNodeUncheckable, getDisabledState, isNodeUncheckable } from '../utils';
4
+ import { useItemDataKeys } from '../../Tree/TreeProvider';
5
+ import Highlight from '../../Highlight';
6
+ function useTreeNodeProps(props) {
7
+ var _useItemDataKeys = useItemDataKeys(),
8
+ valueKey = _useItemDataKeys.valueKey,
9
+ labelKey = _useItemDataKeys.labelKey;
10
+ var uncheckableItemValues = props.uncheckableItemValues,
11
+ disabledItemValues = props.disabledItemValues,
12
+ loadingNodeValues = props.loadingNodeValues,
13
+ focusItemValue = props.focusItemValue,
14
+ flattenedNodes = props.flattenedNodes,
15
+ keyword = props.keyword;
16
+ return useCallback(function (nodeData) {
17
+ var visible = nodeData.visible,
18
+ checkState = nodeData.checkState;
19
+ var value = nodeData[valueKey];
20
+ var nodeLabel = nodeData[labelKey];
21
+ var allUncheckable = isAllSiblingNodeUncheckable(nodeData, flattenedNodes, uncheckableItemValues, valueKey);
22
+ var label = keyword ? /*#__PURE__*/React.createElement(Highlight, {
23
+ as: "span",
24
+ query: keyword
25
+ }, nodeLabel) : nodeLabel;
26
+ var disabled = getDisabledState(flattenedNodes, nodeData, {
27
+ disabledItemValues: disabledItemValues,
28
+ valueKey: valueKey
29
+ });
30
+ var uncheckable = isNodeUncheckable(nodeData, {
31
+ uncheckableItemValues: uncheckableItemValues,
32
+ valueKey: valueKey
33
+ });
34
+ var loading = loadingNodeValues.some(function (item) {
35
+ return item === nodeData[valueKey];
36
+ });
37
+ var focus = focusItemValue === value;
38
+ return {
39
+ value: value,
40
+ label: label,
41
+ visible: visible,
42
+ loading: loading,
43
+ disabled: disabled,
44
+ nodeData: nodeData,
45
+ checkState: checkState,
46
+ uncheckable: uncheckable,
47
+ allUncheckable: allUncheckable,
48
+ focus: focus
49
+ };
50
+ }, [valueKey, flattenedNodes, uncheckableItemValues, keyword, labelKey, disabledItemValues, loadingNodeValues, focusItemValue]);
51
+ }
52
+ export default useTreeNodeProps;
@@ -0,0 +1,5 @@
1
+ declare function useTreeValue(controlledValue: any, { defaultValue, uncheckableItemValues }: {
2
+ defaultValue: any;
3
+ uncheckableItemValues: any;
4
+ }): any[];
5
+ export default useTreeValue;
@@ -0,0 +1,16 @@
1
+ 'use client';
2
+ import { useControlled, useMount } from '../../utils';
3
+ import { getCheckTreeDefaultValue } from '../utils';
4
+ function useTreeValue(controlledValue, _ref) {
5
+ var defaultValue = _ref.defaultValue,
6
+ uncheckableItemValues = _ref.uncheckableItemValues;
7
+ var _useControlled = useControlled(controlledValue, defaultValue),
8
+ value = _useControlled[0],
9
+ setValue = _useControlled[1],
10
+ isControlled = _useControlled[2];
11
+ useMount(function () {
12
+ setValue(getCheckTreeDefaultValue(value, uncheckableItemValues));
13
+ });
14
+ return [value, setValue, isControlled];
15
+ }
16
+ export default useTreeValue;
@@ -1,15 +1,3 @@
1
- import { FormControlPickerProps, RsRefForwardingComponent } from '../@types/common';
2
- import { ValueType } from '../CheckTreePicker';
3
- import { TreeBaseProps } from '../Tree/Tree';
4
- export interface CheckTreeProps extends TreeBaseProps<ValueType>, FormControlPickerProps<ValueType> {
5
- /** Tree node cascade */
6
- cascade?: boolean;
7
- /** Set the option value for the check box not to be rendered */
8
- uncheckableItemValues?: ValueType;
9
- }
10
- /**
11
- * The `CheckTree` component is used for selecting multiple options which are organized in a tree structure.
12
- * @see https://rsuitejs.com/components/check-tree
13
- */
14
- declare const CheckTree: RsRefForwardingComponent<'div', CheckTreeProps>;
1
+ import CheckTree from './CheckTree';
2
+ export type { CheckTreeProps, ValueType } from './CheckTree';
15
3
  export default CheckTree;
@@ -1,23 +1,3 @@
1
1
  'use client';
2
- import _extends from "@babel/runtime/helpers/esm/extends";
3
- import React, { useMemo } from 'react';
4
- import CheckTreePicker from '../CheckTreePicker';
5
- import TreeContext from '../Tree/TreeContext';
6
- /**
7
- * The `CheckTree` component is used for selecting multiple options which are organized in a tree structure.
8
- * @see https://rsuitejs.com/components/check-tree
9
- */
10
- var CheckTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
11
- var contextValue = useMemo(function () {
12
- return {
13
- inline: true
14
- };
15
- }, []);
16
- return /*#__PURE__*/React.createElement(TreeContext.Provider, {
17
- value: contextValue
18
- }, /*#__PURE__*/React.createElement(CheckTreePicker, _extends({
19
- ref: ref
20
- }, props)));
21
- });
22
- CheckTree.displayName = 'CheckTree';
2
+ import CheckTree from './CheckTree';
23
3
  export default CheckTree;
@@ -0,0 +1,53 @@
1
+ import { CheckTreeProps, ValueType } from './CheckTree';
2
+ import { CheckStateType } from '../utils';
3
+ import { TreeNode, TreeNodeMap } from '../Tree/types';
4
+ /**
5
+ * Checks if every child of a given parent node is checked.
6
+ */
7
+ export declare function isEveryChildChecked(parent: TreeNode, options: {
8
+ nodes: TreeNodeMap;
9
+ childrenKey: string;
10
+ }): boolean;
11
+ /**
12
+ * Checks if any child node is checked.
13
+ */
14
+ export declare function isSomeChildChecked(nodes: TreeNodeMap, parent: TreeNode, childrenKey: string): boolean;
15
+ /**
16
+ * Checks if any node in the data has a grandchild.
17
+ */
18
+ export declare function hasGrandchild(data: any[], childrenKey: string): boolean;
19
+ /**
20
+ * Checks if all sibling nodes of a given node are uncheckable.
21
+ */
22
+ export declare function isAllSiblingNodeUncheckable(node: TreeNode, nodes: TreeNodeMap, uncheckableItemValues: (string | number)[], valueKey: string): boolean;
23
+ /**
24
+ * Checks if every first-level node is uncheckable based on the provided criteria.
25
+ */
26
+ export declare function isEveryFirstLevelNodeUncheckable(nodes: TreeNodeMap, uncheckableItemValues: (string | number)[], valueKey: string): boolean;
27
+ /**
28
+ * Checks if a node is uncheckable.
29
+ */
30
+ export declare function isNodeUncheckable(node: any, props: Required<Pick<CheckTreeProps, 'uncheckableItemValues' | 'valueKey'>>): boolean;
31
+ export declare function getFormattedTree(nodes: TreeNodeMap, data: any[], props: Required<Pick<CheckTreeProps, 'childrenKey' | 'cascade'>>): any[];
32
+ /**
33
+ * Determines the disabled state of a tree node.
34
+ */
35
+ export declare function getDisabledState(nodes: TreeNodeMap, node: TreeNode, props: Required<Pick<CheckTreeProps, 'disabledItemValues' | 'valueKey'>>): boolean;
36
+ /**
37
+ * Returns the default value for the check tree.
38
+ */
39
+ export declare function getCheckTreeDefaultValue<T = any>(value: T, uncheckableItemValues: T): any[];
40
+ /**
41
+ * Retrieves the selected items from the given nodes.
42
+ */
43
+ export declare function getSelectedItems(nodes: TreeNodeMap, values: ValueType): TreeNode[];
44
+ interface NodeCheckStateOptions {
45
+ nodes: TreeNodeMap;
46
+ cascade: boolean;
47
+ childrenKey: string;
48
+ }
49
+ /**
50
+ * Calculates the check state of a node in a check tree.
51
+ */
52
+ export declare function getNodeCheckState(node: TreeNode, options: NodeCheckStateOptions): CheckStateType;
53
+ export {};