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,310 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+ exports.__esModule = true;
7
+ exports.default = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _isNil = _interopRequireDefault(require("lodash/isNil"));
12
+ var _Windowing = require("../internals/Windowing");
13
+ var _CheckTreeNode = _interopRequireDefault(require("./CheckTreeNode"));
14
+ var _IndentLine = _interopRequireDefault(require("../Tree/IndentLine"));
15
+ var _utils = require("../utils");
16
+ var _utils2 = require("../internals/Tree/utils");
17
+ var _Picker = require("../internals/Picker");
18
+ var _Tree = require("../internals/Tree");
19
+ var _SearchBox = _interopRequireDefault(require("../internals/SearchBox"));
20
+ var _utils3 = require("./utils");
21
+ var _utils4 = require("../Tree/utils");
22
+ var _useTreeSearch2 = _interopRequireDefault(require("../Tree/hooks/useTreeSearch"));
23
+ var _useFocusTree2 = _interopRequireDefault(require("../Tree/hooks/useFocusTree"));
24
+ var _useVirtualizedTreeData = _interopRequireDefault(require("../Tree/hooks/useVirtualizedTreeData"));
25
+ var _useTreeCheckState2 = _interopRequireDefault(require("./hooks/useTreeCheckState"));
26
+ var _useTreeNodeProps = _interopRequireDefault(require("./hooks/useTreeNodeProps"));
27
+ var _TreeProvider = require("../Tree/TreeProvider");
28
+ /**
29
+ * Props for the CheckTreeView component.
30
+ */
31
+
32
+ var CheckTreeView = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
33
+ var _merge2;
34
+ var _props$as = props.as,
35
+ Component = _props$as === void 0 ? 'div' : _props$as,
36
+ className = props.className,
37
+ _props$classPrefix = props.classPrefix,
38
+ classPrefix = _props$classPrefix === void 0 ? 'check-tree' : _props$classPrefix,
39
+ _props$cascade = props.cascade,
40
+ cascade = _props$cascade === void 0 ? true : _props$cascade,
41
+ _props$data = props.data,
42
+ data = _props$data === void 0 ? [] : _props$data,
43
+ _props$disabledItemVa = props.disabledItemValues,
44
+ disabledItemValues = _props$disabledItemVa === void 0 ? [] : _props$disabledItemVa,
45
+ _props$expandItemValu = props.expandItemValues,
46
+ expandItemValues = _props$expandItemValu === void 0 ? [] : _props$expandItemValu,
47
+ _props$height = props.height,
48
+ height = _props$height === void 0 ? 360 : _props$height,
49
+ overrideLocale = props.locale,
50
+ listProps = props.listProps,
51
+ listRef = props.listRef,
52
+ style = props.style,
53
+ searchKeyword = props.searchKeyword,
54
+ showIndentLine = props.showIndentLine,
55
+ searchable = props.searchable,
56
+ searchInputRef = props.searchInputRef,
57
+ _props$uncheckableIte = props.uncheckableItemValues,
58
+ uncheckableItemValues = _props$uncheckableIte === void 0 ? [] : _props$uncheckableIte,
59
+ _props$virtualized = props.virtualized,
60
+ virtualized = _props$virtualized === void 0 ? false : _props$virtualized,
61
+ _props$loadingNodeVal = props.loadingNodeValues,
62
+ loadingNodeValues = _props$loadingNodeVal === void 0 ? [] : _props$loadingNodeVal,
63
+ _props$flattenedNodes = props.flattenedNodes,
64
+ flattenedNodes = _props$flattenedNodes === void 0 ? {} : _props$flattenedNodes,
65
+ searchBy = props.searchBy,
66
+ onChange = props.onChange,
67
+ onSearch = props.onSearch,
68
+ onSelect = props.onSelect,
69
+ onSelectItem = props.onSelectItem,
70
+ onScroll = props.onScroll,
71
+ onExpand = props.onExpand,
72
+ onFocusItem = props.onFocusItem,
73
+ rest = (0, _objectWithoutPropertiesLoose2.default)(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"]);
74
+ var _useCustom = (0, _utils.useCustom)('Picker', overrideLocale),
75
+ locale = _useCustom.locale;
76
+ var _useItemDataKeys = (0, _TreeProvider.useItemDataKeys)(),
77
+ childrenKey = _useItemDataKeys.childrenKey,
78
+ valueKey = _useItemDataKeys.valueKey;
79
+ var _useClassNames = (0, _utils.useClassNames)(classPrefix),
80
+ prefix = _useClassNames.prefix,
81
+ merge = _useClassNames.merge,
82
+ withClassPrefix = _useClassNames.withClassPrefix;
83
+ var _useTreeCheckState = (0, _useTreeCheckState2.default)({
84
+ cascade: cascade,
85
+ flattenedNodes: flattenedNodes,
86
+ uncheckableItemValues: uncheckableItemValues
87
+ }),
88
+ getCheckedValues = _useTreeCheckState.getCheckedValues;
89
+ var handleSearchCallback = function handleSearchCallback(value, _data, event) {
90
+ onSearch === null || onSearch === void 0 ? void 0 : onSearch(value, event);
91
+ };
92
+ var _useTreeSearch = (0, _useTreeSearch2.default)({
93
+ callback: handleSearchCallback,
94
+ data: data,
95
+ searchKeyword: searchKeyword,
96
+ searchBy: searchBy
97
+ }),
98
+ filteredData = _useTreeSearch.filteredData,
99
+ keyword = _useTreeSearch.keyword,
100
+ setFilteredData = _useTreeSearch.setFilteredData,
101
+ handleSearch = _useTreeSearch.handleSearch;
102
+ var _useFocusTree = (0, _useFocusTree2.default)({
103
+ filteredData: filteredData,
104
+ disabledItemValues: disabledItemValues,
105
+ expandItemValues: expandItemValues,
106
+ searchKeyword: keyword,
107
+ flattenedNodes: flattenedNodes,
108
+ onFocused: onFocusItem,
109
+ onExpand: onExpand
110
+ }),
111
+ focusItemValue = _useFocusTree.focusItemValue,
112
+ setFocusItemValue = _useFocusTree.setFocusItemValue,
113
+ onTreeKeydown = _useFocusTree.onTreeKeydown,
114
+ saveTreeNodeRef = _useFocusTree.saveTreeNodeRef;
115
+ var transformation = (0, _useVirtualizedTreeData.default)(flattenedNodes, filteredData, {
116
+ cascade: cascade,
117
+ expandItemValues: expandItemValues,
118
+ searchKeyword: keyword
119
+ });
120
+
121
+ /**
122
+ * Get formatted nodes for render tree
123
+ * @params render - renderNode function. only used when virtualized setting false
124
+ */
125
+ var getFormattedNodes = function getFormattedNodes(render) {
126
+ if (virtualized) {
127
+ return transformation().filter(function (item) {
128
+ return item.visible;
129
+ });
130
+ }
131
+ return (0, _utils3.getFormattedTree)(flattenedNodes, filteredData, {
132
+ childrenKey: childrenKey,
133
+ cascade: cascade
134
+ }).map(function (node) {
135
+ return render === null || render === void 0 ? void 0 : render(node, 1);
136
+ }).filter(function (item) {
137
+ return item;
138
+ });
139
+ };
140
+ var getTreeNodeProps = (0, _useTreeNodeProps.default)({
141
+ uncheckableItemValues: uncheckableItemValues,
142
+ disabledItemValues: disabledItemValues,
143
+ loadingNodeValues: loadingNodeValues,
144
+ focusItemValue: focusItemValue,
145
+ flattenedNodes: flattenedNodes,
146
+ keyword: keyword
147
+ });
148
+ (0, _react.useEffect)(function () {
149
+ setFilteredData(data, keyword);
150
+ }, [data, keyword, setFilteredData]);
151
+
152
+ // TODO-Doma
153
+ // Replace `getKeyParentMap` with `getParentMap`
154
+ var itemParentMap = (0, _react.useMemo)(function () {
155
+ return (0, _utils2.getKeyParentMap)(data, function (node) {
156
+ return node[valueKey];
157
+ }, function (node) {
158
+ return node[childrenKey];
159
+ });
160
+ }, [childrenKey, data, valueKey]);
161
+ var handleSelect = (0, _utils.useEventCallback)(function (node, event) {
162
+ var currentNode = node.refKey ? flattenedNodes[node.refKey] : null;
163
+ if (!node || !currentNode) {
164
+ return;
165
+ }
166
+ var checkedValues = getCheckedValues(node, !currentNode.check);
167
+ var path = (0, _utils2.getPathTowardsItem)(node, function (item) {
168
+ return itemParentMap.get(item[valueKey]);
169
+ });
170
+ setFocusItemValue(node[valueKey]);
171
+ onChange === null || onChange === void 0 ? void 0 : onChange(checkedValues, event);
172
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, checkedValues, event);
173
+ onSelectItem === null || onSelectItem === void 0 ? void 0 : onSelectItem(node, path);
174
+ });
175
+ var selectActiveItem = function selectActiveItem(event) {
176
+ if ((0, _isNil.default)(focusItemValue)) return;
177
+ var activeItem = (0, _utils4.getActiveItem)(focusItemValue, flattenedNodes, valueKey);
178
+ if (!(0, _utils3.isNodeUncheckable)(activeItem, {
179
+ uncheckableItemValues: uncheckableItemValues,
180
+ valueKey: valueKey
181
+ }) && activeItem !== null) {
182
+ handleSelect(activeItem, event);
183
+ }
184
+ };
185
+ var handleTreeKeyDown = (0, _utils.useEventCallback)(function (event) {
186
+ onTreeKeydown(event);
187
+ (0, _Picker.onMenuKeyDown)(event, {
188
+ enter: selectActiveItem
189
+ });
190
+ });
191
+ var renderNode = function renderNode(node, layer) {
192
+ var visible = node.visible,
193
+ refKey = node.refKey,
194
+ parent = node.parent; // when searching, all nodes should be expand
195
+ var expanded = (0, _utils4.isExpand)(keyword, expandItemValues.includes(node[valueKey]));
196
+ if (!visible) {
197
+ return null;
198
+ }
199
+ var children = node[childrenKey];
200
+ var hasChildren = keyword ? (0, _utils4.hasVisibleChildren)(node, childrenKey) : Boolean(children);
201
+ var treeNodeProps = (0, _extends2.default)({}, getTreeNodeProps((0, _extends2.default)({}, node, {
202
+ parent: parent
203
+ })), {
204
+ layer: layer,
205
+ expanded: expanded,
206
+ hasChildren: hasChildren,
207
+ onSelect: handleSelect,
208
+ onExpand: onExpand
209
+ });
210
+ if (hasChildren) {
211
+ var _merge;
212
+ layer += 1;
213
+ var childClassName = merge(prefix('node-children'), (_merge = {}, _merge[prefix('node-expanded')] = expanded, _merge));
214
+ var nodes = children || [];
215
+ return /*#__PURE__*/_react.default.createElement("div", {
216
+ className: childClassName,
217
+ key: node[valueKey]
218
+ }, /*#__PURE__*/_react.default.createElement(_CheckTreeNode.default, (0, _extends2.default)({}, treeNodeProps, {
219
+ treeItemRef: function treeItemRef(ref) {
220
+ return saveTreeNodeRef(ref, refKey);
221
+ }
222
+ })), /*#__PURE__*/_react.default.createElement("div", {
223
+ className: prefix('group'),
224
+ role: "group"
225
+ }, nodes.map(function (child) {
226
+ return renderNode(child, layer);
227
+ }), showIndentLine && /*#__PURE__*/_react.default.createElement(_IndentLine.default, null)));
228
+ }
229
+ return /*#__PURE__*/_react.default.createElement(_CheckTreeNode.default, (0, _extends2.default)({
230
+ key: node[valueKey],
231
+ treeItemRef: function treeItemRef(ref) {
232
+ return saveTreeNodeRef(ref, refKey);
233
+ }
234
+ }, treeNodeProps));
235
+ };
236
+ var renderVirtualListNode = function renderVirtualListNode(_ref) {
237
+ var index = _ref.index,
238
+ style = _ref.style,
239
+ data = _ref.data;
240
+ var node = data[index];
241
+ var layer = node.layer,
242
+ refKey = node.refKey,
243
+ visible = node.visible,
244
+ hasChildren = node.hasChildren,
245
+ parent = node.parent;
246
+ var expanded = (0, _utils4.isExpand)(keyword, expandItemValues.includes(node[valueKey]));
247
+ var treeNodeProps = (0, _extends2.default)({}, getTreeNodeProps((0, _extends2.default)({}, node, {
248
+ parent: parent
249
+ })), {
250
+ onSelect: handleSelect,
251
+ onExpand: onExpand,
252
+ expanded: expanded,
253
+ layer: layer,
254
+ hasChildren: hasChildren
255
+ });
256
+ return visible && /*#__PURE__*/_react.default.createElement(_CheckTreeNode.default, (0, _extends2.default)({
257
+ style: style,
258
+ ref: function ref(_ref2) {
259
+ return saveTreeNodeRef(_ref2, refKey);
260
+ }
261
+ }, treeNodeProps));
262
+ };
263
+ var classes = merge(className, withClassPrefix({
264
+ 'without-children': !(0, _utils3.hasGrandchild)(data, childrenKey),
265
+ virtualized: virtualized
266
+ }));
267
+ var formattedNodes = getFormattedNodes(renderNode);
268
+ var treeNodesClass = merge(prefix('root'), (_merge2 = {}, _merge2[prefix('all-uncheckable')] = (0, _utils3.isEveryFirstLevelNodeUncheckable)(flattenedNodes, uncheckableItemValues, valueKey), _merge2));
269
+ return /*#__PURE__*/_react.default.createElement(Component, {
270
+ ref: ref,
271
+ className: classes,
272
+ style: style
273
+ }, searchable ? /*#__PURE__*/_react.default.createElement(_SearchBox.default, {
274
+ placeholder: locale.searchPlaceholder,
275
+ onChange: handleSearch,
276
+ value: keyword,
277
+ inputRef: searchInputRef
278
+ }) : null, keyword && formattedNodes.length === 0 ? /*#__PURE__*/_react.default.createElement("div", {
279
+ className: prefix('empty')
280
+ }, locale.noResultsText) : null, /*#__PURE__*/_react.default.createElement(_Tree.TreeView, (0, _extends2.default)({}, rest, {
281
+ multiselectable: true,
282
+ treeRootClassName: treeNodesClass,
283
+ className: prefix('view'),
284
+ onScroll: onScroll,
285
+ onKeyDown: handleTreeKeyDown,
286
+ style: virtualized ? undefined : {
287
+ height: height
288
+ }
289
+ }), virtualized ? /*#__PURE__*/_react.default.createElement(_Windowing.AutoSizer, {
290
+ defaultHeight: height,
291
+ style: {
292
+ width: 'auto',
293
+ height: 'auto'
294
+ },
295
+ className: prefix('virt-auto-sizer')
296
+ }, function (_ref3) {
297
+ var height = _ref3.height;
298
+ return /*#__PURE__*/_react.default.createElement(_Windowing.List, (0, _extends2.default)({
299
+ ref: listRef,
300
+ height: height,
301
+ itemSize: _Windowing.defaultItemSize,
302
+ itemCount: formattedNodes.length,
303
+ itemData: formattedNodes,
304
+ className: prefix('virt-list')
305
+ }, listProps), renderVirtualListNode);
306
+ }) : formattedNodes));
307
+ });
308
+ CheckTreeView.displayName = 'CheckTreeView';
309
+ var _default = CheckTreeView;
310
+ exports.default = _default;
@@ -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,93 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var _isNil = _interopRequireDefault(require("lodash/isNil"));
9
+ var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
10
+ var _TreeProvider = require("../../Tree/TreeProvider");
11
+ var _utils = require("../../utils");
12
+ var _utils2 = require("../utils");
13
+ function useTreeCheckState(props) {
14
+ var cascade = props.cascade,
15
+ flattenedNodes = props.flattenedNodes,
16
+ uncheckableItemValues = props.uncheckableItemValues;
17
+ var _useItemDataKeys = (0, _TreeProvider.useItemDataKeys)(),
18
+ valueKey = _useItemDataKeys.valueKey,
19
+ childrenKey = _useItemDataKeys.childrenKey;
20
+ var checkParentNode = (0, _utils.useEventCallback)(function (nodes, node, checked) {
21
+ var currentNode = node.refKey ? nodes[node.refKey] : null;
22
+ if (cascade && currentNode) {
23
+ if (!checked) {
24
+ currentNode.check = checked;
25
+ currentNode.checkAll = checked;
26
+ } else {
27
+ if ((0, _utils2.isEveryChildChecked)(currentNode, {
28
+ nodes: nodes,
29
+ childrenKey: childrenKey
30
+ })) {
31
+ currentNode.check = true;
32
+ currentNode.checkAll = true;
33
+ } else {
34
+ currentNode.check = false;
35
+ currentNode.checkAll = false;
36
+ }
37
+ }
38
+ if (currentNode.parent) {
39
+ checkParentNode(nodes, currentNode.parent, checked);
40
+ }
41
+ }
42
+ });
43
+ var checkChildNode = (0, _utils.useEventCallback)(function (nodes, node, isChecked) {
44
+ var currentNode = node.refKey ? nodes[node.refKey] : null;
45
+ if (!currentNode) {
46
+ return;
47
+ }
48
+ currentNode.check = isChecked;
49
+ if (!currentNode[childrenKey] || !currentNode[childrenKey].length || !cascade) {
50
+ currentNode.checkAll = false;
51
+ } else {
52
+ currentNode.checkAll = isChecked;
53
+ currentNode[childrenKey].forEach(function (child) {
54
+ checkChildNode(nodes, child, isChecked);
55
+ });
56
+ }
57
+ });
58
+ var getCheckedValuesByParent = (0, _react.useCallback)(function (nodes) {
59
+ var values = [];
60
+ for (var key in nodes) {
61
+ var currentNode = nodes[key];
62
+ if (!(0, _isNil.default)(currentNode.parent) && !(0, _isNil.default)(currentNode.parent.refKey)) {
63
+ var parentNode = nodes[currentNode.parent.refKey];
64
+ if (currentNode.check) {
65
+ if (!(parentNode !== null && parentNode !== void 0 && parentNode.checkAll)) {
66
+ values.push(currentNode[valueKey]);
67
+ } else if (parentNode !== null && parentNode !== void 0 && parentNode.uncheckable) {
68
+ values.push(currentNode[valueKey]);
69
+ }
70
+ }
71
+ } else if (currentNode.check) {
72
+ values.push(currentNode[valueKey]);
73
+ }
74
+ }
75
+ return values;
76
+ }, [valueKey]);
77
+ var getCheckedValues = (0, _utils.useEventCallback)(function (node, isChecked) {
78
+ var nodes = (0, _cloneDeep.default)(flattenedNodes);
79
+ checkChildNode(nodes, node, isChecked);
80
+ if (node.parent) {
81
+ checkParentNode(nodes, node.parent, isChecked);
82
+ }
83
+ var values = getCheckedValuesByParent(nodes);
84
+ return values.filter(function (v) {
85
+ return !uncheckableItemValues.includes(v);
86
+ });
87
+ });
88
+ return {
89
+ getCheckedValues: getCheckedValues
90
+ };
91
+ }
92
+ var _default = useTreeCheckState;
93
+ exports.default = _default;
@@ -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,59 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
+ exports.__esModule = true;
7
+ exports.default = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _utils = require("../utils");
10
+ var _TreeProvider = require("../../Tree/TreeProvider");
11
+ var _Highlight = _interopRequireDefault(require("../../Highlight"));
12
+ function useTreeNodeProps(props) {
13
+ var _useItemDataKeys = (0, _TreeProvider.useItemDataKeys)(),
14
+ valueKey = _useItemDataKeys.valueKey,
15
+ labelKey = _useItemDataKeys.labelKey;
16
+ var uncheckableItemValues = props.uncheckableItemValues,
17
+ disabledItemValues = props.disabledItemValues,
18
+ loadingNodeValues = props.loadingNodeValues,
19
+ focusItemValue = props.focusItemValue,
20
+ flattenedNodes = props.flattenedNodes,
21
+ keyword = props.keyword;
22
+ return (0, _react.useCallback)(function (nodeData) {
23
+ var visible = nodeData.visible,
24
+ checkState = nodeData.checkState;
25
+ var value = nodeData[valueKey];
26
+ var nodeLabel = nodeData[labelKey];
27
+ var allUncheckable = (0, _utils.isAllSiblingNodeUncheckable)(nodeData, flattenedNodes, uncheckableItemValues, valueKey);
28
+ var label = keyword ? /*#__PURE__*/_react.default.createElement(_Highlight.default, {
29
+ as: "span",
30
+ query: keyword
31
+ }, nodeLabel) : nodeLabel;
32
+ var disabled = (0, _utils.getDisabledState)(flattenedNodes, nodeData, {
33
+ disabledItemValues: disabledItemValues,
34
+ valueKey: valueKey
35
+ });
36
+ var uncheckable = (0, _utils.isNodeUncheckable)(nodeData, {
37
+ uncheckableItemValues: uncheckableItemValues,
38
+ valueKey: valueKey
39
+ });
40
+ var loading = loadingNodeValues.some(function (item) {
41
+ return item === nodeData[valueKey];
42
+ });
43
+ var focus = focusItemValue === value;
44
+ return {
45
+ value: value,
46
+ label: label,
47
+ visible: visible,
48
+ loading: loading,
49
+ disabled: disabled,
50
+ nodeData: nodeData,
51
+ checkState: checkState,
52
+ uncheckable: uncheckable,
53
+ allUncheckable: allUncheckable,
54
+ focus: focus
55
+ };
56
+ }, [valueKey, flattenedNodes, uncheckableItemValues, keyword, labelKey, disabledItemValues, loadingNodeValues, focusItemValue]);
57
+ }
58
+ var _default = useTreeNodeProps;
59
+ exports.default = _default;
@@ -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,21 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ exports.__esModule = true;
5
+ exports.default = void 0;
6
+ var _utils = require("../../utils");
7
+ var _utils2 = require("../utils");
8
+ function useTreeValue(controlledValue, _ref) {
9
+ var defaultValue = _ref.defaultValue,
10
+ uncheckableItemValues = _ref.uncheckableItemValues;
11
+ var _useControlled = (0, _utils.useControlled)(controlledValue, defaultValue),
12
+ value = _useControlled[0],
13
+ setValue = _useControlled[1],
14
+ isControlled = _useControlled[2];
15
+ (0, _utils.useMount)(function () {
16
+ setValue((0, _utils2.getCheckTreeDefaultValue)(value, uncheckableItemValues));
17
+ });
18
+ return [value, setValue, isControlled];
19
+ }
20
+ var _default = useTreeValue;
21
+ exports.default = _default;
@@ -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,30 +1,9 @@
1
1
  'use client';
2
2
  "use strict";
3
3
 
4
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
5
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
5
  exports.__esModule = true;
7
6
  exports.default = void 0;
8
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
- var _react = _interopRequireWildcard(require("react"));
10
- var _CheckTreePicker = _interopRequireDefault(require("../CheckTreePicker"));
11
- var _TreeContext = _interopRequireDefault(require("../Tree/TreeContext"));
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.default.forwardRef(function (props, ref) {
17
- var contextValue = (0, _react.useMemo)(function () {
18
- return {
19
- inline: true
20
- };
21
- }, []);
22
- return /*#__PURE__*/_react.default.createElement(_TreeContext.default.Provider, {
23
- value: contextValue
24
- }, /*#__PURE__*/_react.default.createElement(_CheckTreePicker.default, (0, _extends2.default)({
25
- ref: ref
26
- }, props)));
27
- });
28
- CheckTree.displayName = 'CheckTree';
29
- var _default = CheckTree;
7
+ var _CheckTree = _interopRequireDefault(require("./CheckTree"));
8
+ var _default = _CheckTree.default;
30
9
  exports.default = _default;
@@ -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 {};