rsuite 5.60.1 → 5.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (475) hide show
  1. package/Accordion/styles/index.css +4 -4
  2. package/AutoComplete/styles/index.css +58 -22
  3. package/Button/styles/index.css +12 -8
  4. package/Button/styles/mixin.less +1 -1
  5. package/CHANGELOG.md +37 -0
  6. package/Calendar/styles/index.css +16 -15
  7. package/CascadeTree/styles/index.css +11 -9
  8. package/CascadeTree/styles/index.less +7 -0
  9. package/CascadeTree/styles/search.less +0 -10
  10. package/Cascader/styles/index.css +60 -31
  11. package/CheckPicker/styles/index.css +59 -27
  12. package/CheckPicker/styles/index.less +3 -3
  13. package/CheckTree/styles/index.css +160 -134
  14. package/CheckTree/styles/index.less +141 -1
  15. package/CheckTreePicker/styles/index.css +170 -126
  16. package/CheckTreePicker/styles/index.less +8 -181
  17. package/Checkbox/styles/index.css +7 -8
  18. package/Checkbox/styles/index.less +1 -5
  19. package/DateInput/styles/index.css +4 -4
  20. package/DatePicker/styles/index.css +63 -26
  21. package/DatePicker/styles/index.less +1 -0
  22. package/DateRangeInput/styles/index.css +4 -4
  23. package/DateRangePicker/styles/index.css +69 -26
  24. package/DateRangePicker/styles/index.less +3 -0
  25. package/Dropdown/styles/index.css +14 -13
  26. package/Highlight/package.json +7 -0
  27. package/Highlight/styles/index.css +8 -0
  28. package/Highlight/styles/index.less +6 -0
  29. package/IconButton/styles/index.css +11 -10
  30. package/Input/styles/index.css +4 -4
  31. package/InputGroup/styles/index.css +18 -17
  32. package/InputGroup/styles/index.less +1 -1
  33. package/InputNumber/styles/index.css +19 -18
  34. package/InputPicker/styles/index.css +58 -22
  35. package/LICENSE +1 -1
  36. package/MultiCascadeTree/styles/index.css +61 -36
  37. package/MultiCascadeTree/styles/index.less +1 -1
  38. package/MultiCascader/styles/index.css +704 -679
  39. package/MultiCascader/styles/index.less +0 -1
  40. package/Nav/styles/index.css +15 -14
  41. package/Navbar/styles/index.css +14 -13
  42. package/Pagination/styles/index.css +62 -26
  43. package/Panel/styles/index.css +4 -4
  44. package/Placeholder/styles/index.css +2 -3
  45. package/Placeholder/styles/index.less +2 -3
  46. package/README.md +53 -90
  47. package/Radio/styles/index.css +7 -7
  48. package/Radio/styles/index.less +1 -5
  49. package/RangeSlider/styles/index.css +2 -2
  50. package/Rate/styles/index.css +1 -1
  51. package/Rate/styles/index.less +1 -1
  52. package/SelectPicker/styles/index.css +58 -22
  53. package/Slider/styles/index.css +2 -2
  54. package/Slider/styles/index.less +2 -2
  55. package/Steps/styles/index.css +6 -1
  56. package/Steps/styles/index.less +2 -1
  57. package/Tabs/styles/index.css +15 -14
  58. package/TagInput/styles/index.css +59 -27
  59. package/TagPicker/styles/index.css +59 -27
  60. package/Toggle/styles/index.css +16 -8
  61. package/Toggle/styles/index.less +2 -1
  62. package/Tree/styles/indent-line.less +8 -0
  63. package/Tree/styles/index.css +140 -141
  64. package/Tree/styles/index.less +188 -1
  65. package/Tree/styles/toggle.less +36 -0
  66. package/TreePicker/styles/index.css +142 -134
  67. package/TreePicker/styles/index.less +4 -234
  68. package/Uploader/styles/index.css +12 -11
  69. package/cjs/@types/common.d.ts +41 -4
  70. package/cjs/AutoComplete/AutoComplete.js +2 -1
  71. package/cjs/CascadeTree/CascadeTree.js +8 -7
  72. package/cjs/CascadeTree/SearchView.js +7 -14
  73. package/cjs/CascadeTree/hooks/usePaths.js +4 -4
  74. package/cjs/CascadeTree/hooks/useSearch.js +2 -1
  75. package/cjs/CascadeTree/utils.d.ts +0 -11
  76. package/cjs/CascadeTree/utils.js +0 -23
  77. package/cjs/Cascader/Cascader.js +17 -16
  78. package/cjs/CheckPicker/CheckPicker.js +26 -29
  79. package/cjs/CheckTree/CheckTree.d.ts +16 -0
  80. package/cjs/CheckTree/CheckTree.js +112 -0
  81. package/cjs/CheckTree/CheckTreeNode.d.ts +72 -0
  82. package/cjs/CheckTree/CheckTreeNode.js +117 -0
  83. package/cjs/CheckTree/CheckTreeView.d.ts +70 -0
  84. package/cjs/CheckTree/CheckTreeView.js +310 -0
  85. package/cjs/CheckTree/hooks/useTreeCheckState.d.ts +10 -0
  86. package/cjs/CheckTree/hooks/useTreeCheckState.js +93 -0
  87. package/cjs/CheckTree/hooks/useTreeNodeProps.d.ts +22 -0
  88. package/cjs/CheckTree/hooks/useTreeNodeProps.js +59 -0
  89. package/cjs/CheckTree/hooks/useTreeValue.d.ts +5 -0
  90. package/cjs/CheckTree/hooks/useTreeValue.js +21 -0
  91. package/cjs/CheckTree/index.d.ts +2 -14
  92. package/cjs/CheckTree/index.js +2 -23
  93. package/cjs/CheckTree/utils.d.ts +53 -0
  94. package/cjs/{CheckTreePicker → CheckTree}/utils.js +76 -26
  95. package/cjs/CheckTreePicker/CheckTreePicker.d.ts +30 -12
  96. package/cjs/CheckTreePicker/CheckTreePicker.js +153 -603
  97. package/cjs/CheckTreePicker/hooks/useFocusState.d.ts +16 -0
  98. package/cjs/CheckTreePicker/hooks/useFocusState.js +42 -0
  99. package/cjs/DateInput/DateField.js +3 -1
  100. package/cjs/DateInput/DateInput.js +17 -16
  101. package/{esm/DateInput → cjs/DateInput/hooks}/useDateInputState.d.ts +1 -1
  102. package/cjs/DateInput/{useDateInputState.js → hooks/useDateInputState.js} +2 -2
  103. package/cjs/DateInput/hooks/useFieldCursor.d.ts +6 -0
  104. package/cjs/DateInput/hooks/useFieldCursor.js +56 -0
  105. package/cjs/DateInput/hooks/useSelectedState.d.ts +14 -0
  106. package/cjs/DateInput/hooks/useSelectedState.js +23 -0
  107. package/cjs/DateInput/index.d.ts +5 -3
  108. package/cjs/DateInput/index.js +11 -5
  109. package/cjs/DateInput/utils.d.ts +0 -1
  110. package/cjs/DateInput/utils.js +2 -24
  111. package/cjs/DatePicker/DatePicker.d.ts +4 -0
  112. package/cjs/DatePicker/DatePicker.js +20 -5
  113. package/cjs/DatePicker/types.d.ts +0 -4
  114. package/cjs/DateRangeInput/DateRangeInput.js +16 -17
  115. package/cjs/DateRangePicker/DateRangePicker.d.ts +51 -23
  116. package/cjs/DateRangePicker/DateRangePicker.js +71 -51
  117. package/cjs/DateRangePicker/hooks/useDateDisabled.d.ts +16 -0
  118. package/cjs/DateRangePicker/hooks/useDateDisabled.js +31 -0
  119. package/cjs/DateRangePicker/types.d.ts +1 -0
  120. package/cjs/Highlight/Highlight.d.ts +14 -0
  121. package/cjs/Highlight/Highlight.js +58 -0
  122. package/cjs/Highlight/index.d.ts +3 -0
  123. package/cjs/Highlight/index.js +9 -0
  124. package/cjs/Highlight/utils/highlightText.d.ts +5 -0
  125. package/cjs/Highlight/utils/highlightText.js +29 -0
  126. package/cjs/InputPicker/InputPicker.js +37 -41
  127. package/cjs/MultiCascadeTree/SearchView.js +6 -14
  128. package/cjs/MultiCascadeTree/hooks/useCascadeValue.js +15 -1
  129. package/cjs/MultiCascadeTree/hooks/useColumnData.js +2 -2
  130. package/cjs/MultiCascadeTree/hooks/useFlattenData.js +3 -3
  131. package/cjs/MultiCascadeTree/hooks/useSearch.js +2 -1
  132. package/cjs/MultiCascadeTree/utils.d.ts +4 -4
  133. package/cjs/MultiCascadeTree/utils.js +20 -11
  134. package/cjs/MultiCascader/MultiCascader.js +12 -12
  135. package/cjs/SelectPicker/SelectPicker.js +2 -6
  136. package/cjs/Tree/IndentLine.d.ts +3 -0
  137. package/cjs/Tree/IndentLine.js +18 -0
  138. package/cjs/Tree/Tree.d.ts +4 -92
  139. package/cjs/Tree/Tree.js +79 -20
  140. package/cjs/Tree/TreeNode.d.ts +101 -0
  141. package/cjs/Tree/TreeNode.js +147 -0
  142. package/cjs/Tree/TreeNodeToggle.d.ts +9 -0
  143. package/cjs/Tree/TreeNodeToggle.js +56 -0
  144. package/cjs/Tree/TreeProvider.d.ts +52 -0
  145. package/cjs/Tree/TreeProvider.js +84 -0
  146. package/cjs/Tree/TreeView.d.ts +68 -0
  147. package/cjs/Tree/TreeView.js +305 -0
  148. package/cjs/Tree/hooks/useExpandTree.d.ts +60 -0
  149. package/cjs/Tree/hooks/useExpandTree.js +77 -0
  150. package/cjs/Tree/hooks/useFlattenTree.d.ts +42 -0
  151. package/cjs/Tree/hooks/useFlattenTree.js +98 -0
  152. package/cjs/Tree/hooks/useFocusTree.d.ts +24 -0
  153. package/cjs/Tree/hooks/useFocusTree.js +158 -0
  154. package/cjs/Tree/hooks/useForceUpdate.d.ts +2 -0
  155. package/cjs/Tree/hooks/useForceUpdate.js +16 -0
  156. package/cjs/Tree/hooks/useTreeDrag.d.ts +32 -0
  157. package/cjs/Tree/hooks/useTreeDrag.js +268 -0
  158. package/cjs/Tree/hooks/useTreeNodeProps.d.ts +29 -0
  159. package/cjs/Tree/hooks/useTreeNodeProps.js +83 -0
  160. package/cjs/Tree/hooks/useTreeNodeRefs.d.ts +6 -0
  161. package/cjs/Tree/hooks/useTreeNodeRefs.js +22 -0
  162. package/cjs/Tree/hooks/useTreeSearch.d.ts +18 -0
  163. package/cjs/Tree/hooks/useTreeSearch.js +74 -0
  164. package/cjs/Tree/hooks/useTreeWithChildren.d.ts +14 -0
  165. package/cjs/Tree/hooks/useTreeWithChildren.js +64 -0
  166. package/cjs/Tree/hooks/useVirtualizedTreeData.d.ts +7 -0
  167. package/cjs/Tree/hooks/useVirtualizedTreeData.js +82 -0
  168. package/cjs/Tree/types.d.ts +257 -0
  169. package/cjs/Tree/types.js +33 -0
  170. package/cjs/Tree/utils/flattenTree.d.ts +25 -0
  171. package/cjs/Tree/utils/flattenTree.js +95 -0
  172. package/cjs/Tree/utils/focusableTree.d.ts +55 -0
  173. package/cjs/Tree/utils/focusableTree.js +157 -0
  174. package/cjs/Tree/utils/formatNodeRefKey.d.ts +4 -0
  175. package/cjs/Tree/utils/formatNodeRefKey.js +11 -0
  176. package/cjs/Tree/utils/getExpandItemValues.d.ts +11 -0
  177. package/cjs/Tree/utils/getExpandItemValues.js +21 -0
  178. package/cjs/Tree/utils/getNodeParentKeys.d.ts +5 -0
  179. package/cjs/Tree/utils/getNodeParentKeys.js +21 -0
  180. package/cjs/Tree/utils/getTreeActiveNode.d.ts +5 -0
  181. package/cjs/Tree/utils/getTreeActiveNode.js +21 -0
  182. package/cjs/Tree/utils/hasVisibleChildren.d.ts +5 -0
  183. package/cjs/Tree/utils/hasVisibleChildren.js +16 -0
  184. package/cjs/Tree/utils/indentTreeNode.d.ts +3 -0
  185. package/cjs/Tree/utils/indentTreeNode.js +18 -0
  186. package/cjs/Tree/utils/index.d.ts +11 -0
  187. package/cjs/Tree/utils/index.js +35 -0
  188. package/cjs/Tree/utils/isExpand.d.ts +6 -0
  189. package/cjs/Tree/utils/isExpand.js +14 -0
  190. package/cjs/Tree/utils/isSearching.d.ts +1 -0
  191. package/cjs/Tree/utils/isSearching.js +10 -0
  192. package/cjs/Tree/utils/treeKeyboardInteractions.d.ts +21 -0
  193. package/cjs/Tree/utils/treeKeyboardInteractions.js +49 -0
  194. package/cjs/TreePicker/TreePicker.d.ts +27 -21
  195. package/cjs/TreePicker/TreePicker.js +155 -575
  196. package/cjs/TreePicker/hooks/useFocusState.d.ts +20 -0
  197. package/cjs/TreePicker/hooks/useFocusState.js +53 -0
  198. package/cjs/index.d.ts +2 -0
  199. package/cjs/index.js +3 -1
  200. package/cjs/internals/Picker/Listbox.d.ts +40 -10
  201. package/cjs/internals/Picker/Listbox.js +21 -16
  202. package/cjs/internals/Picker/PickerIndicator.d.ts +2 -1
  203. package/cjs/internals/Picker/PickerIndicator.js +7 -3
  204. package/cjs/internals/Picker/hooks/useFocusItemValue.js +4 -4
  205. package/cjs/internals/Picker/hooks/usePickerRef.d.ts +1 -4
  206. package/cjs/internals/Picker/hooks/usePickerRef.js +3 -20
  207. package/cjs/internals/Picker/index.d.ts +0 -1
  208. package/cjs/internals/Picker/index.js +1 -4
  209. package/cjs/internals/Picker/utils.js +12 -12
  210. package/cjs/internals/{Picker → Tree}/TreeView.js +1 -1
  211. package/cjs/internals/Tree/index.d.ts +1 -0
  212. package/cjs/internals/Tree/index.js +8 -0
  213. package/cjs/internals/Tree/utils/filterNodesOfTree.d.ts +5 -0
  214. package/cjs/internals/Tree/utils/filterNodesOfTree.js +31 -0
  215. package/cjs/internals/Tree/utils/findNodeOfTree.d.ts +1 -0
  216. package/cjs/internals/Tree/utils/findNodeOfTree.js +26 -0
  217. package/cjs/internals/Tree/utils/getParentMap.d.ts +15 -0
  218. package/cjs/internals/Tree/utils/getParentMap.js +52 -0
  219. package/cjs/internals/Tree/utils/getPathTowardsItem.d.ts +4 -0
  220. package/cjs/internals/Tree/utils/getPathTowardsItem.js +16 -0
  221. package/cjs/internals/Tree/utils/index.d.ts +4 -0
  222. package/cjs/internals/Tree/utils/index.js +14 -0
  223. package/cjs/internals/Windowing/List.d.ts +1 -0
  224. package/cjs/internals/Windowing/List.js +5 -1
  225. package/cjs/internals/Windowing/index.d.ts +1 -1
  226. package/cjs/internals/Windowing/index.js +4 -2
  227. package/cjs/internals/hooks/index.d.ts +1 -0
  228. package/cjs/internals/hooks/index.js +8 -0
  229. package/cjs/internals/hooks/useFoucsVirtualListItem.d.ts +7 -0
  230. package/cjs/internals/hooks/useFoucsVirtualListItem.js +26 -0
  231. package/cjs/{utils → internals/utils}/getSafeRegExpString.d.ts +1 -1
  232. package/cjs/{utils → internals/utils}/getSafeRegExpString.js +1 -1
  233. package/cjs/internals/utils/index.d.ts +2 -0
  234. package/cjs/internals/utils/index.js +9 -0
  235. package/cjs/internals/utils/stringifyReactNode.d.ts +2 -0
  236. package/cjs/internals/utils/stringifyReactNode.js +17 -0
  237. package/cjs/utils/constants.d.ts +0 -2
  238. package/cjs/utils/constants.js +1 -6
  239. package/cjs/utils/getDataGroupBy.js +3 -3
  240. package/cjs/utils/index.d.ts +0 -3
  241. package/cjs/utils/index.js +1 -10
  242. package/cjs/utils/useIsomorphicLayoutEffect.d.ts +2 -2
  243. package/dist/rsuite-no-reset-rtl.css +301 -302
  244. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  245. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  246. package/dist/rsuite-no-reset.css +303 -306
  247. package/dist/rsuite-no-reset.min.css +1 -1
  248. package/dist/rsuite-no-reset.min.css.map +1 -1
  249. package/dist/rsuite-rtl.css +302 -303
  250. package/dist/rsuite-rtl.min.css +1 -1
  251. package/dist/rsuite-rtl.min.css.map +1 -1
  252. package/dist/rsuite.css +304 -307
  253. package/dist/rsuite.js +657 -140
  254. package/dist/rsuite.js.map +1 -1
  255. package/dist/rsuite.min.css +1 -1
  256. package/dist/rsuite.min.css.map +1 -1
  257. package/dist/rsuite.min.js +1 -1
  258. package/dist/rsuite.min.js.map +1 -1
  259. package/esm/@types/common.d.ts +41 -4
  260. package/esm/AutoComplete/AutoComplete.js +2 -1
  261. package/esm/CascadeTree/CascadeTree.js +2 -1
  262. package/esm/CascadeTree/SearchView.js +6 -13
  263. package/esm/CascadeTree/hooks/usePaths.js +1 -1
  264. package/esm/CascadeTree/hooks/useSearch.js +2 -1
  265. package/esm/CascadeTree/utils.d.ts +0 -11
  266. package/esm/CascadeTree/utils.js +0 -22
  267. package/esm/Cascader/Cascader.js +2 -1
  268. package/esm/CheckPicker/CheckPicker.js +4 -7
  269. package/esm/CheckTree/CheckTree.d.ts +16 -0
  270. package/esm/CheckTree/CheckTree.js +105 -0
  271. package/esm/CheckTree/CheckTreeNode.d.ts +72 -0
  272. package/esm/CheckTree/CheckTreeNode.js +110 -0
  273. package/esm/CheckTree/CheckTreeView.d.ts +70 -0
  274. package/esm/CheckTree/CheckTreeView.js +304 -0
  275. package/esm/CheckTree/hooks/useTreeCheckState.d.ts +10 -0
  276. package/esm/CheckTree/hooks/useTreeCheckState.js +87 -0
  277. package/esm/CheckTree/hooks/useTreeNodeProps.d.ts +22 -0
  278. package/esm/CheckTree/hooks/useTreeNodeProps.js +52 -0
  279. package/esm/CheckTree/hooks/useTreeValue.d.ts +5 -0
  280. package/esm/CheckTree/hooks/useTreeValue.js +16 -0
  281. package/esm/CheckTree/index.d.ts +2 -14
  282. package/esm/CheckTree/index.js +1 -21
  283. package/esm/CheckTree/utils.d.ts +53 -0
  284. package/esm/{CheckTreePicker → CheckTree}/utils.js +72 -22
  285. package/esm/CheckTreePicker/CheckTreePicker.d.ts +30 -12
  286. package/esm/CheckTreePicker/CheckTreePicker.js +156 -607
  287. package/esm/CheckTreePicker/hooks/useFocusState.d.ts +16 -0
  288. package/esm/CheckTreePicker/hooks/useFocusState.js +37 -0
  289. package/esm/DateInput/DateField.js +3 -1
  290. package/esm/DateInput/DateInput.js +19 -18
  291. package/{cjs/DateInput → esm/DateInput/hooks}/useDateInputState.d.ts +1 -1
  292. package/esm/DateInput/{useDateInputState.js → hooks/useDateInputState.js} +2 -2
  293. package/esm/DateInput/hooks/useFieldCursor.d.ts +6 -0
  294. package/esm/DateInput/hooks/useFieldCursor.js +49 -0
  295. package/esm/DateInput/hooks/useSelectedState.d.ts +14 -0
  296. package/esm/DateInput/hooks/useSelectedState.js +17 -0
  297. package/esm/DateInput/index.d.ts +5 -3
  298. package/esm/DateInput/index.js +5 -3
  299. package/esm/DateInput/utils.d.ts +0 -1
  300. package/esm/DateInput/utils.js +2 -23
  301. package/esm/DatePicker/DatePicker.d.ts +4 -0
  302. package/esm/DatePicker/DatePicker.js +20 -5
  303. package/esm/DatePicker/types.d.ts +0 -4
  304. package/esm/DateRangeInput/DateRangeInput.js +17 -18
  305. package/esm/DateRangePicker/DateRangePicker.d.ts +51 -23
  306. package/esm/DateRangePicker/DateRangePicker.js +71 -51
  307. package/esm/DateRangePicker/hooks/useDateDisabled.d.ts +16 -0
  308. package/esm/DateRangePicker/hooks/useDateDisabled.js +26 -0
  309. package/esm/DateRangePicker/types.d.ts +1 -0
  310. package/esm/Highlight/Highlight.d.ts +14 -0
  311. package/esm/Highlight/Highlight.js +52 -0
  312. package/esm/Highlight/index.d.ts +3 -0
  313. package/esm/Highlight/index.js +3 -0
  314. package/esm/Highlight/utils/highlightText.d.ts +5 -0
  315. package/esm/Highlight/utils/highlightText.js +25 -0
  316. package/esm/InputPicker/InputPicker.js +3 -7
  317. package/esm/MultiCascadeTree/SearchView.js +6 -14
  318. package/esm/MultiCascadeTree/hooks/useCascadeValue.js +15 -1
  319. package/esm/MultiCascadeTree/hooks/useColumnData.js +1 -1
  320. package/esm/MultiCascadeTree/hooks/useFlattenData.js +1 -1
  321. package/esm/MultiCascadeTree/hooks/useSearch.js +2 -1
  322. package/esm/MultiCascadeTree/utils.d.ts +4 -4
  323. package/esm/MultiCascadeTree/utils.js +18 -9
  324. package/esm/MultiCascader/MultiCascader.js +1 -1
  325. package/esm/SelectPicker/SelectPicker.js +2 -6
  326. package/esm/Tree/IndentLine.d.ts +3 -0
  327. package/esm/Tree/IndentLine.js +12 -0
  328. package/esm/Tree/Tree.d.ts +4 -92
  329. package/esm/Tree/Tree.js +78 -18
  330. package/esm/Tree/TreeNode.d.ts +101 -0
  331. package/esm/Tree/TreeNode.js +141 -0
  332. package/esm/Tree/TreeNodeToggle.d.ts +9 -0
  333. package/esm/Tree/TreeNodeToggle.js +50 -0
  334. package/esm/Tree/TreeProvider.d.ts +52 -0
  335. package/esm/Tree/TreeProvider.js +74 -0
  336. package/esm/Tree/TreeView.d.ts +68 -0
  337. package/esm/Tree/TreeView.js +299 -0
  338. package/esm/Tree/hooks/useExpandTree.d.ts +60 -0
  339. package/esm/Tree/hooks/useExpandTree.js +70 -0
  340. package/esm/Tree/hooks/useFlattenTree.d.ts +42 -0
  341. package/esm/Tree/hooks/useFlattenTree.js +92 -0
  342. package/esm/Tree/hooks/useFocusTree.d.ts +24 -0
  343. package/esm/Tree/hooks/useFocusTree.js +153 -0
  344. package/esm/Tree/hooks/useForceUpdate.d.ts +2 -0
  345. package/esm/Tree/hooks/useForceUpdate.js +11 -0
  346. package/esm/Tree/hooks/useTreeDrag.d.ts +32 -0
  347. package/esm/Tree/hooks/useTreeDrag.js +264 -0
  348. package/esm/Tree/hooks/useTreeNodeProps.d.ts +29 -0
  349. package/esm/Tree/hooks/useTreeNodeProps.js +76 -0
  350. package/esm/Tree/hooks/useTreeNodeRefs.d.ts +6 -0
  351. package/esm/Tree/hooks/useTreeNodeRefs.js +18 -0
  352. package/esm/Tree/hooks/useTreeSearch.d.ts +18 -0
  353. package/esm/Tree/hooks/useTreeSearch.js +69 -0
  354. package/esm/Tree/hooks/useTreeWithChildren.d.ts +14 -0
  355. package/esm/Tree/hooks/useTreeWithChildren.js +59 -0
  356. package/esm/Tree/hooks/useVirtualizedTreeData.d.ts +7 -0
  357. package/esm/Tree/hooks/useVirtualizedTreeData.js +77 -0
  358. package/esm/Tree/types.d.ts +257 -0
  359. package/esm/Tree/types.js +30 -0
  360. package/esm/Tree/utils/flattenTree.d.ts +25 -0
  361. package/esm/Tree/utils/flattenTree.js +88 -0
  362. package/esm/Tree/utils/focusableTree.d.ts +55 -0
  363. package/esm/Tree/utils/focusableTree.js +146 -0
  364. package/esm/Tree/utils/formatNodeRefKey.d.ts +4 -0
  365. package/esm/Tree/utils/formatNodeRefKey.js +7 -0
  366. package/esm/Tree/utils/getExpandItemValues.d.ts +11 -0
  367. package/esm/Tree/utils/getExpandItemValues.js +17 -0
  368. package/esm/Tree/utils/getNodeParentKeys.d.ts +5 -0
  369. package/esm/Tree/utils/getNodeParentKeys.js +17 -0
  370. package/esm/Tree/utils/getTreeActiveNode.d.ts +5 -0
  371. package/esm/Tree/utils/getTreeActiveNode.js +16 -0
  372. package/esm/Tree/utils/hasVisibleChildren.d.ts +5 -0
  373. package/esm/Tree/utils/hasVisibleChildren.js +12 -0
  374. package/esm/Tree/utils/indentTreeNode.d.ts +3 -0
  375. package/esm/Tree/utils/indentTreeNode.js +14 -0
  376. package/esm/Tree/utils/index.d.ts +11 -0
  377. package/esm/Tree/utils/index.js +14 -0
  378. package/esm/Tree/utils/isExpand.d.ts +6 -0
  379. package/esm/Tree/utils/isExpand.js +11 -0
  380. package/esm/Tree/utils/isSearching.d.ts +1 -0
  381. package/esm/Tree/utils/isSearching.js +5 -0
  382. package/esm/Tree/utils/treeKeyboardInteractions.d.ts +21 -0
  383. package/esm/Tree/utils/treeKeyboardInteractions.js +43 -0
  384. package/esm/TreePicker/TreePicker.d.ts +27 -21
  385. package/esm/TreePicker/TreePicker.js +158 -579
  386. package/esm/TreePicker/hooks/useFocusState.d.ts +20 -0
  387. package/esm/TreePicker/hooks/useFocusState.js +48 -0
  388. package/esm/index.d.ts +2 -0
  389. package/esm/index.js +1 -0
  390. package/esm/internals/Picker/Listbox.d.ts +40 -10
  391. package/esm/internals/Picker/Listbox.js +22 -16
  392. package/esm/internals/Picker/PickerIndicator.d.ts +2 -1
  393. package/esm/internals/Picker/PickerIndicator.js +7 -3
  394. package/esm/internals/Picker/hooks/useFocusItemValue.js +1 -1
  395. package/esm/internals/Picker/hooks/usePickerRef.d.ts +1 -4
  396. package/esm/internals/Picker/hooks/usePickerRef.js +3 -20
  397. package/esm/internals/Picker/index.d.ts +0 -1
  398. package/esm/internals/Picker/index.js +0 -1
  399. package/esm/internals/Picker/utils.js +1 -1
  400. package/esm/internals/{Picker → Tree}/TreeView.js +1 -1
  401. package/esm/internals/Tree/index.d.ts +1 -0
  402. package/esm/internals/Tree/index.js +2 -0
  403. package/esm/internals/Tree/utils/filterNodesOfTree.d.ts +5 -0
  404. package/esm/internals/Tree/utils/filterNodesOfTree.js +26 -0
  405. package/esm/internals/Tree/utils/findNodeOfTree.d.ts +1 -0
  406. package/esm/internals/Tree/utils/findNodeOfTree.js +22 -0
  407. package/esm/internals/Tree/utils/getParentMap.d.ts +15 -0
  408. package/esm/internals/Tree/utils/getParentMap.js +47 -0
  409. package/esm/internals/Tree/utils/getPathTowardsItem.d.ts +4 -0
  410. package/esm/internals/Tree/utils/getPathTowardsItem.js +12 -0
  411. package/esm/internals/Tree/utils/index.d.ts +4 -0
  412. package/esm/internals/Tree/utils/index.js +5 -0
  413. package/esm/internals/Windowing/List.d.ts +1 -0
  414. package/esm/internals/Windowing/List.js +3 -0
  415. package/esm/internals/Windowing/index.d.ts +1 -1
  416. package/esm/internals/Windowing/index.js +1 -1
  417. package/esm/internals/hooks/index.d.ts +1 -0
  418. package/esm/internals/hooks/index.js +2 -0
  419. package/esm/internals/hooks/useFoucsVirtualListItem.d.ts +7 -0
  420. package/esm/internals/hooks/useFoucsVirtualListItem.js +22 -0
  421. package/esm/{utils → internals/utils}/getSafeRegExpString.d.ts +1 -1
  422. package/esm/{utils → internals/utils}/getSafeRegExpString.js +1 -1
  423. package/esm/internals/utils/index.d.ts +2 -0
  424. package/esm/internals/utils/index.js +3 -0
  425. package/esm/internals/utils/stringifyReactNode.d.ts +2 -0
  426. package/esm/internals/utils/stringifyReactNode.js +12 -0
  427. package/esm/utils/constants.d.ts +0 -2
  428. package/esm/utils/constants.js +0 -3
  429. package/esm/utils/getDataGroupBy.js +1 -1
  430. package/esm/utils/index.d.ts +0 -3
  431. package/esm/utils/index.js +0 -3
  432. package/esm/utils/useIsomorphicLayoutEffect.d.ts +2 -2
  433. package/internals/Picker/styles/index.less +27 -1
  434. package/package.json +2 -2
  435. package/styles/color-modes/dark.less +5 -1
  436. package/styles/color-modes/high-contrast.less +8 -2
  437. package/styles/color-modes/light.less +10 -5
  438. package/styles/index.less +1 -0
  439. package/TreePicker/styles/mixin.less +0 -7
  440. package/cjs/CheckTreePicker/CheckTreeNode.d.ts +0 -28
  441. package/cjs/CheckTreePicker/CheckTreeNode.js +0 -140
  442. package/cjs/CheckTreePicker/utils.d.ts +0 -44
  443. package/cjs/Tree/TreeContext.d.ts +0 -6
  444. package/cjs/Tree/TreeContext.js +0 -10
  445. package/cjs/TreePicker/TreeNode.d.ts +0 -36
  446. package/cjs/TreePicker/TreeNode.js +0 -174
  447. package/cjs/utils/appendTooltip.d.ts +0 -10
  448. package/cjs/utils/appendTooltip.js +0 -20
  449. package/cjs/utils/stringToObject.d.ts +0 -2
  450. package/cjs/utils/stringToObject.js +0 -19
  451. package/cjs/utils/treeUtils.d.ts +0 -304
  452. package/cjs/utils/treeUtils.js +0 -1095
  453. package/esm/CheckTreePicker/CheckTreeNode.d.ts +0 -28
  454. package/esm/CheckTreePicker/CheckTreeNode.js +0 -133
  455. package/esm/CheckTreePicker/utils.d.ts +0 -44
  456. package/esm/Tree/TreeContext.d.ts +0 -6
  457. package/esm/Tree/TreeContext.js +0 -4
  458. package/esm/TreePicker/TreeNode.d.ts +0 -36
  459. package/esm/TreePicker/TreeNode.js +0 -167
  460. package/esm/utils/appendTooltip.d.ts +0 -10
  461. package/esm/utils/appendTooltip.js +0 -15
  462. package/esm/utils/stringToObject.d.ts +0 -2
  463. package/esm/utils/stringToObject.js +0 -14
  464. package/esm/utils/treeUtils.d.ts +0 -304
  465. package/esm/utils/treeUtils.js +0 -1043
  466. /package/cjs/DateInput/{useIsFocused.d.ts → hooks/useIsFocused.d.ts} +0 -0
  467. /package/cjs/DateInput/{useIsFocused.js → hooks/useIsFocused.js} +0 -0
  468. /package/cjs/DateInput/{useKeyboardInputEvent.d.ts → hooks/useKeyboardInputEvent.d.ts} +0 -0
  469. /package/cjs/DateInput/{useKeyboardInputEvent.js → hooks/useKeyboardInputEvent.js} +0 -0
  470. /package/cjs/internals/{Picker → Tree}/TreeView.d.ts +0 -0
  471. /package/esm/DateInput/{useIsFocused.d.ts → hooks/useIsFocused.d.ts} +0 -0
  472. /package/esm/DateInput/{useIsFocused.js → hooks/useIsFocused.js} +0 -0
  473. /package/esm/DateInput/{useKeyboardInputEvent.d.ts → hooks/useKeyboardInputEvent.d.ts} +0 -0
  474. /package/esm/DateInput/{useKeyboardInputEvent.js → hooks/useKeyboardInputEvent.js} +0 -0
  475. /package/esm/internals/{Picker → Tree}/TreeView.d.ts +0 -0
@@ -0,0 +1,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 {};