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,16 @@
1
+ /// <reference types="react" />
2
+ interface FocusStateProps {
3
+ target: React.RefObject<HTMLElement>;
4
+ onEnter?: (node: HTMLElement) => void;
5
+ onExit?: (node: HTMLElement) => void;
6
+ }
7
+ declare function useFocusState(props: FocusStateProps): {
8
+ active: boolean;
9
+ focusItemValue: string | number | null | undefined;
10
+ setFocusItemValue: import("react").Dispatch<import("react").SetStateAction<string | number | null | undefined>>;
11
+ triggerProps: {
12
+ onEnter: (...args: any[]) => any;
13
+ onExit: (...args: any[]) => any;
14
+ };
15
+ };
16
+ export default useFocusState;
@@ -0,0 +1,42 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ exports.__esModule = true;
5
+ exports.default = void 0;
6
+ var _react = require("react");
7
+ var _utils = require("../../utils");
8
+ function useFocusState(props) {
9
+ var target = props.target;
10
+ var _useState = (0, _react.useState)(false),
11
+ active = _useState[0],
12
+ setActive = _useState[1];
13
+ var _useState2 = (0, _react.useState)(null),
14
+ focusItemValue = _useState2[0],
15
+ setFocusItemValue = _useState2[1];
16
+ var focusTarget = (0, _utils.useEventCallback)(function () {
17
+ var _target$current;
18
+ (_target$current = target.current) === null || _target$current === void 0 ? void 0 : _target$current.focus();
19
+ });
20
+ var onEnter = (0, _utils.useEventCallback)(function (node) {
21
+ var _props$onEnter;
22
+ setActive(true);
23
+ (_props$onEnter = props.onEnter) === null || _props$onEnter === void 0 ? void 0 : _props$onEnter.call(props, node);
24
+ });
25
+ var onExit = (0, _utils.useEventCallback)(function (node) {
26
+ var _props$onExit;
27
+ setActive(false);
28
+ focusTarget();
29
+ (_props$onExit = props.onExit) === null || _props$onExit === void 0 ? void 0 : _props$onExit.call(props, node);
30
+ });
31
+ return {
32
+ active: active,
33
+ focusItemValue: focusItemValue,
34
+ setFocusItemValue: setFocusItemValue,
35
+ triggerProps: {
36
+ onEnter: onEnter,
37
+ onExit: onExit
38
+ }
39
+ };
40
+ }
41
+ var _default = useFocusState;
42
+ exports.default = _default;
@@ -132,7 +132,9 @@ var useDateField = function useDateField(format, localize, date) {
132
132
  if (typeof value === 'number') {
133
133
  value = padNumber(value, pattern.length);
134
134
  }
135
- str = str.replace(pattern, value);
135
+ if (typeof value !== 'undefined') {
136
+ str = str.replace(pattern, value);
137
+ }
136
138
  }
137
139
  });
138
140
  return str;
@@ -12,9 +12,11 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _Input = _interopRequireDefault(require("../Input"));
13
13
  var _utils = require("../utils");
14
14
  var _utils2 = require("./utils");
15
- var _useDateInputState2 = _interopRequireDefault(require("./useDateInputState"));
16
- var _useKeyboardInputEvent = _interopRequireDefault(require("./useKeyboardInputEvent"));
17
- var _useIsFocused2 = _interopRequireDefault(require("./useIsFocused"));
15
+ var _useDateInputState2 = _interopRequireDefault(require("./hooks/useDateInputState"));
16
+ var _useKeyboardInputEvent = _interopRequireDefault(require("./hooks/useKeyboardInputEvent"));
17
+ var _useIsFocused2 = _interopRequireDefault(require("./hooks/useIsFocused"));
18
+ var _useFieldCursor2 = _interopRequireDefault(require("./hooks/useFieldCursor"));
19
+ var _useSelectedState2 = _interopRequireDefault(require("./hooks/useSelectedState"));
18
20
  /**
19
21
  * The DateInput component lets users select a date with the keyboard.
20
22
  * @version 5.58.0
@@ -32,13 +34,9 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
32
34
  onFocus = props.onFocus,
33
35
  rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["format", "value", "defaultValue", "placeholder", "onChange", "onKeyDown", "onBlur", "onFocus"]);
34
36
  var inputRef = (0, _react.useRef)();
35
- var _useState = (0, _react.useState)({
36
- selectedPattern: 'y',
37
- selectionStart: 0,
38
- selectionEnd: 0
39
- }),
40
- selectedState = _useState[0],
41
- setSelectedState = _useState[1];
37
+ var _useSelectedState = (0, _useSelectedState2.default)(),
38
+ selectedState = _useSelectedState.selectedState,
39
+ setSelectedState = _useSelectedState.setSelectedState;
42
40
  var _useCustom = (0, _utils.useCustom)('Calendar'),
43
41
  locale = _useCustom.locale;
44
42
  var dateLocale = locale.dateLocale;
@@ -58,6 +56,10 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
58
56
  getDateField = _useDateInputState.getDateField,
59
57
  toDateString = _useDateInputState.toDateString,
60
58
  isEmptyValue = _useDateInputState.isEmptyValue;
59
+ var _useFieldCursor = (0, _useFieldCursor2.default)(formatStr, valueProp),
60
+ isMoveCursor = _useFieldCursor.isMoveCursor,
61
+ increment = _useFieldCursor.increment,
62
+ reset = _useFieldCursor.reset;
61
63
  var dateString = toDateString();
62
64
  var keyPressOptions = (0, _react.useMemo)(function () {
63
65
  return {
@@ -80,8 +82,9 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
80
82
  input: input,
81
83
  direction: direction
82
84
  }));
83
- setSelectionRange(state.selectionStart, state.selectionEnd);
84
85
  setSelectedState(state);
86
+ setSelectionRange(state.selectionStart, state.selectionEnd);
87
+ reset();
85
88
  });
86
89
  var onSegmentValueChange = (0, _utils.useEventCallback)(function (event) {
87
90
  var input = event.target;
@@ -104,6 +107,7 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
104
107
  if (!pattern) {
105
108
  return;
106
109
  }
110
+ increment();
107
111
  var field = getDateField(pattern);
108
112
  var value = parseInt(key, 10);
109
113
  var padValue = parseInt("" + (field.value || '') + key, 10);
@@ -113,10 +117,6 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
113
117
  if ((0, _utils2.validateDateTime)(field.name, padValue)) {
114
118
  newValue = padValue;
115
119
  }
116
- if (pattern === 'M') {
117
- // Month cannot be less than 1.
118
- newValue = Math.max(1, newValue);
119
- }
120
120
  setDateField(pattern, newValue, function (date) {
121
121
  return handleChange(date, event);
122
122
  });
@@ -132,7 +132,7 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
132
132
  setSelectionRange(nextState.selectionStart, nextState.selectionEnd);
133
133
 
134
134
  // If the field is full value, move the cursor to the next field
135
- if ((0, _utils2.isFieldFullValue)(formatStr, newValue, pattern) && input.selectionEnd !== input.value.length) {
135
+ if (isMoveCursor(newValue, pattern) && input.selectionEnd !== input.value.length) {
136
136
  onSegmentChange(event, 'right');
137
137
  }
138
138
  });
@@ -148,6 +148,7 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
148
148
  setDateField(selectedState.selectedPattern, null, function (date) {
149
149
  return handleChange(date, event);
150
150
  });
151
+ reset();
151
152
  }
152
153
  });
153
154
  var handleClick = (0, _utils.useEventCallback)(function (event) {
@@ -1,4 +1,4 @@
1
- import { format } from '../utils/dateUtils';
1
+ import { format } from '../../utils/dateUtils';
2
2
  import type { Locale } from 'date-fns';
3
3
  interface DateInputState {
4
4
  formatStr: string;
@@ -7,8 +7,8 @@ exports.useDateInputState = useDateInputState;
7
7
  exports.default = void 0;
8
8
  var _react = require("react");
9
9
  var _startCase = _interopRequireDefault(require("lodash/startCase"));
10
- var _dateUtils = require("../utils/dateUtils");
11
- var _DateField = require("./DateField");
10
+ var _dateUtils = require("../../utils/dateUtils");
11
+ var _DateField = require("../DateField");
12
12
  function useDateInputState(_ref) {
13
13
  var formatStr = _ref.formatStr,
14
14
  locale = _ref.locale,
@@ -0,0 +1,6 @@
1
+ export declare function useFieldCursor<V = Date | null>(format: string, value?: V): {
2
+ increment: () => void;
3
+ reset: () => void;
4
+ isMoveCursor: (value: number, pattern: string) => boolean;
5
+ };
6
+ export default useFieldCursor;
@@ -0,0 +1,56 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ exports.__esModule = true;
6
+ exports.useFieldCursor = useFieldCursor;
7
+ exports.default = void 0;
8
+ var _react = require("react");
9
+ var _utils = require("../utils");
10
+ var _useUpdateEffect = _interopRequireDefault(require("../../utils/useUpdateEffect"));
11
+ function useFieldCursor(format, value) {
12
+ var typeCount = (0, _react.useRef)(0);
13
+ var increment = function increment() {
14
+ typeCount.current += 1;
15
+ };
16
+ var reset = function reset() {
17
+ typeCount.current = 0;
18
+ };
19
+ var isMoveCursor = (0, _react.useCallback)(function (value, pattern) {
20
+ var patternGroup = (0, _utils.getPatternGroups)(format, pattern);
21
+ if (value.toString().length === patternGroup.length) {
22
+ return true;
23
+ } else if (pattern === 'y' && typeCount.current === 4) {
24
+ return true;
25
+ } else if (pattern !== 'y' && typeCount.current === 2) {
26
+ return true;
27
+ }
28
+ switch (pattern) {
29
+ case 'M':
30
+ return parseInt(value + "0") > 12;
31
+ case 'd':
32
+ return parseInt(value + "0") > 31;
33
+ case 'H':
34
+ return parseInt(value + "0") > 23;
35
+ case 'h':
36
+ return parseInt(value + "0") > 12;
37
+ case 'm':
38
+ case 's':
39
+ return parseInt(value + "0") > 59;
40
+ default:
41
+ return false;
42
+ }
43
+ }, [format]);
44
+ (0, _useUpdateEffect.default)(function () {
45
+ if (!value) {
46
+ reset();
47
+ }
48
+ }, [value]);
49
+ return {
50
+ increment: increment,
51
+ reset: reset,
52
+ isMoveCursor: isMoveCursor
53
+ };
54
+ }
55
+ var _default = useFieldCursor;
56
+ exports.default = _default;
@@ -0,0 +1,14 @@
1
+ /// <reference types="react" />
2
+ export declare function useSelectedState(): {
3
+ selectedState: {
4
+ selectedPattern: string;
5
+ selectionStart: number;
6
+ selectionEnd: number;
7
+ };
8
+ setSelectedState: import("react").Dispatch<import("react").SetStateAction<{
9
+ selectedPattern: string;
10
+ selectionStart: number;
11
+ selectionEnd: number;
12
+ }>>;
13
+ };
14
+ export default useSelectedState;
@@ -0,0 +1,23 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ exports.__esModule = true;
5
+ exports.useSelectedState = useSelectedState;
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var defaultSelectedState = {
9
+ selectedPattern: 'y',
10
+ selectionStart: 0,
11
+ selectionEnd: 0
12
+ };
13
+ function useSelectedState() {
14
+ var _useState = (0, _react.useState)(defaultSelectedState),
15
+ selectedState = _useState[0],
16
+ setSelectedState = _useState[1];
17
+ return {
18
+ selectedState: selectedState,
19
+ setSelectedState: setSelectedState
20
+ };
21
+ }
22
+ var _default = useSelectedState;
23
+ exports.default = _default;
@@ -1,7 +1,9 @@
1
1
  import DateInput from './DateInput';
2
- export { useDateInputState } from './useDateInputState';
3
- export { useKeyboardInputEvent } from './useKeyboardInputEvent';
4
- export { useIsFocused } from './useIsFocused';
2
+ export { useDateInputState } from './hooks/useDateInputState';
3
+ export { useKeyboardInputEvent } from './hooks/useKeyboardInputEvent';
4
+ export { useIsFocused } from './hooks/useIsFocused';
5
+ export { useSelectedState } from './hooks/useSelectedState';
6
+ export { useFieldCursor } from './hooks/useFieldCursor';
5
7
  export * from './utils';
6
8
  export type { DateInputProps } from './DateInput';
7
9
  export default DateInput;
@@ -6,16 +6,22 @@ exports.__esModule = true;
6
6
  var _exportNames = {
7
7
  useDateInputState: true,
8
8
  useKeyboardInputEvent: true,
9
- useIsFocused: true
9
+ useIsFocused: true,
10
+ useSelectedState: true,
11
+ useFieldCursor: true
10
12
  };
11
- exports.default = exports.useIsFocused = exports.useKeyboardInputEvent = exports.useDateInputState = void 0;
13
+ exports.default = exports.useFieldCursor = exports.useSelectedState = exports.useIsFocused = exports.useKeyboardInputEvent = exports.useDateInputState = void 0;
12
14
  var _DateInput = _interopRequireDefault(require("./DateInput"));
13
- var _useDateInputState = require("./useDateInputState");
15
+ var _useDateInputState = require("./hooks/useDateInputState");
14
16
  exports.useDateInputState = _useDateInputState.useDateInputState;
15
- var _useKeyboardInputEvent = require("./useKeyboardInputEvent");
17
+ var _useKeyboardInputEvent = require("./hooks/useKeyboardInputEvent");
16
18
  exports.useKeyboardInputEvent = _useKeyboardInputEvent.useKeyboardInputEvent;
17
- var _useIsFocused = require("./useIsFocused");
19
+ var _useIsFocused = require("./hooks/useIsFocused");
18
20
  exports.useIsFocused = _useIsFocused.useIsFocused;
21
+ var _useSelectedState = require("./hooks/useSelectedState");
22
+ exports.useSelectedState = _useSelectedState.useSelectedState;
23
+ var _useFieldCursor = require("./hooks/useFieldCursor");
24
+ exports.useFieldCursor = _useFieldCursor.useFieldCursor;
19
25
  var _utils = require("./utils");
20
26
  Object.keys(_utils).forEach(function (key) {
21
27
  if (key === "default" || key === "__esModule") return;
@@ -58,6 +58,5 @@ export declare function getInputSelectedState(options: SelectedStateOptions): {
58
58
  };
59
59
  export declare function validateDateTime(type: string, value: number): boolean;
60
60
  export declare function modifyDate(date: Date, type: string, value: number): Date;
61
- export declare function isFieldFullValue(formatStr: string, value: number, pattern: string): boolean;
62
61
  export declare function useInputSelection(input: React.RefObject<any>): (selectionStart: number, selectionEnd: number) => void;
63
62
  export {};
@@ -10,7 +10,6 @@ exports.isCursorAfterMonth = isCursorAfterMonth;
10
10
  exports.getInputSelectedState = getInputSelectedState;
11
11
  exports.validateDateTime = validateDateTime;
12
12
  exports.modifyDate = modifyDate;
13
- exports.isFieldFullValue = isFieldFullValue;
14
13
  exports.useInputSelection = useInputSelection;
15
14
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
16
15
  var _dateUtils = require("../utils/dateUtils");
@@ -228,31 +227,10 @@ function modifyDate(date, type, value) {
228
227
  }
229
228
  return date;
230
229
  }
231
- function isFieldFullValue(formatStr, value, pattern) {
232
- var patternGroup = getPatternGroups(formatStr, pattern);
233
- if (value.toString().length === patternGroup.length) {
234
- return true;
235
- }
236
- switch (pattern) {
237
- case 'M':
238
- return parseInt(value + "0") > 12;
239
- case 'd':
240
- return parseInt(value + "0") > 31;
241
- case 'H':
242
- return parseInt(value + "0") > 23;
243
- case 'h':
244
- return parseInt(value + "0") > 12;
245
- case 'm':
246
- case 's':
247
- return parseInt(value + "0") > 59;
248
- default:
249
- return false;
250
- }
251
- }
252
- var isTestEnvironment = typeof process !== 'undefined' && undefined === 'test';
253
230
  function useInputSelection(input) {
254
231
  return function setSelectionRange(selectionStart, selectionEnd) {
255
- if (isTestEnvironment) {
232
+ var isTest = input.current.dataset.test === 'true';
233
+ if (isTest) {
256
234
  (0, _utils.safeSetSelection)(input.current, selectionStart, selectionEnd);
257
235
  return;
258
236
  }
@@ -82,6 +82,10 @@ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, Form
82
82
  onShortcutClick?: (range: RangeType<Date>, event: React.MouseEvent) => void;
83
83
  /** Called when clean */
84
84
  onClean?: (event: React.MouseEvent) => void;
85
+ /**
86
+ * Custom rendering of the selected date.
87
+ */
88
+ renderValue?: (value: Date, format: string) => string;
85
89
  /**
86
90
  * Custom rendering calendar cell content.
87
91
  *
@@ -24,6 +24,7 @@ var _utils = require("../utils");
24
24
  var _dateUtils = require("../utils/dateUtils");
25
25
  var _Picker = require("../internals/Picker");
26
26
  var _OverlayTrigger = require("../internals/Overlay/OverlayTrigger");
27
+ var _Input = _interopRequireDefault(require("../Input"));
27
28
  var _DateInput = _interopRequireDefault(require("../DateInput"));
28
29
  var _InputGroup = _interopRequireDefault(require("../InputGroup"));
29
30
  var _utils2 = require("./utils");
@@ -94,11 +95,12 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
94
95
  onToggleTimeDropdown = props.onToggleTimeDropdown,
95
96
  onShortcutClick = props.onShortcutClick,
96
97
  renderCell = props.renderCell,
98
+ renderValue = props.renderValue,
97
99
  DEPRECATED_disabledDate = props.disabledDate,
98
100
  DEPRECATED_disabledHours = props.disabledHours,
99
101
  DEPRECATED_disabledMinutes = props.disabledMinutes,
100
102
  DEPRECATED_disabledSeconds = props.disabledSeconds,
101
- restProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "calendarDefaultDate", "cleanable", "editable", "defaultValue", "disabled", "readOnly", "plaintext", "format", "id", "isoWeek", "limitEndYear", "limitStartYear", "locale", "loading", "label", "menuClassName", "menuStyle", "appearance", "placement", "oneTap", "placeholder", "ranges", "value", "showMeridian", "showWeekNumbers", "style", "size", "caretAs", "shouldDisableDate", "shouldDisableHour", "shouldDisableMinute", "shouldDisableSecond", "onChange", "onChangeCalendarDate", "onClean", "onEntered", "onExited", "onNextMonth", "onOk", "onPrevMonth", "onSelect", "onToggleMonthDropdown", "onToggleTimeDropdown", "onShortcutClick", "renderCell", "disabledDate", "disabledHours", "disabledMinutes", "disabledSeconds"]);
103
+ restProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "calendarDefaultDate", "cleanable", "editable", "defaultValue", "disabled", "readOnly", "plaintext", "format", "id", "isoWeek", "limitEndYear", "limitStartYear", "locale", "loading", "label", "menuClassName", "menuStyle", "appearance", "placement", "oneTap", "placeholder", "ranges", "value", "showMeridian", "showWeekNumbers", "style", "size", "caretAs", "shouldDisableDate", "shouldDisableHour", "shouldDisableMinute", "shouldDisableSecond", "onChange", "onChangeCalendarDate", "onClean", "onEntered", "onExited", "onNextMonth", "onOk", "onPrevMonth", "onSelect", "onToggleMonthDropdown", "onToggleTimeDropdown", "onShortcutClick", "renderCell", "renderValue", "disabledDate", "disabledHours", "disabledMinutes", "disabledSeconds"]);
102
104
  var id = (0, _utils.useUniqueId)('rs-', idProp);
103
105
  var _usePickerRef = (0, _Picker.usePickerRef)(ref),
104
106
  trigger = _usePickerRef.trigger,
@@ -463,6 +465,19 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
463
465
  ariaProps = _partitionHTMLProps[0],
464
466
  rest = _partitionHTMLProps[1];
465
467
  var invalidValue = value && isErrorValue(value);
468
+
469
+ // Custom rendering of the selected value
470
+ var customValue = null;
471
+
472
+ // Input box is read-only when the component is uneditable or loading state
473
+ var inputReadOnly = readOnly || !editable || loading || false;
474
+ if (typeof renderValue === 'function' && value) {
475
+ customValue = renderValue(value, formatStr);
476
+
477
+ // If the custom rendering value, the input box is read-only
478
+ inputReadOnly = true;
479
+ }
480
+ var TargetInput = customValue ? _Input.default : _DateInput.default;
466
481
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerToggleTrigger, {
467
482
  trigger: "active",
468
483
  pickerProps: (0, _pick.default)(props, _Picker.pickTriggerPropKeys),
@@ -483,24 +498,24 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
483
498
  }) : /*#__PURE__*/_react.default.createElement(_InputGroup.default, (0, _extends2.default)({}, (0, _utils2.getRestProps)(rest, usedClassNamePropKeys), {
484
499
  inside: true,
485
500
  size: size,
501
+ disabled: disabled,
486
502
  onClick: handleClick
487
503
  }), /*#__PURE__*/_react.default.createElement(_Picker.PickerLabel, {
488
504
  className: prefix(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["label"]))),
489
505
  id: id + "-label"
490
- }, label), /*#__PURE__*/_react.default.createElement(_DateInput.default, (0, _extends2.default)({
506
+ }, label), /*#__PURE__*/_react.default.createElement(TargetInput, (0, _extends2.default)({
491
507
  "aria-haspopup": "dialog",
492
508
  "aria-invalid": invalidValue,
493
509
  "aria-labelledby": label ? id + "-label" : undefined
494
510
  }, ariaProps, {
495
511
  ref: target,
496
512
  id: id,
497
- value: value,
513
+ value: customValue || value,
498
514
  format: formatStr,
499
515
  placeholder: placeholder ? placeholder : formatStr,
500
516
  disabled: disabled,
501
517
  onChange: handleInputChange,
502
- readOnly: readOnly || !editable || loading,
503
- plaintext: plaintext,
518
+ readOnly: inputReadOnly,
504
519
  onKeyDown: handleInputKeyDown
505
520
  })), /*#__PURE__*/_react.default.createElement(_Picker.PickerIndicator, {
506
521
  loading: loading,
@@ -41,8 +41,4 @@ export interface DeprecatedProps {
41
41
  * @deprecated Use {@link shouldDisableSecond} instead
42
42
  */
43
43
  disabledSeconds?: (second: number, date: Date) => boolean;
44
- /**
45
- * @deprecated
46
- */
47
- renderValue?: (value: Date, format: string) => string;
48
44
  }
@@ -40,13 +40,9 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
40
40
  merge = _useClassNames.merge;
41
41
  var classes = merge(className, withClassPrefix());
42
42
  var inputRef = (0, _react.useRef)();
43
- var _useState = (0, _react.useState)({
44
- selectedPattern: 'y',
45
- selectionStart: 0,
46
- selectionEnd: 0
47
- }),
48
- selectedState = _useState[0],
49
- setSelectedState = _useState[1];
43
+ var _useSelectedState = (0, _DateInput.useSelectedState)(),
44
+ selectedState = _useSelectedState.selectedState,
45
+ setSelectedState = _useSelectedState.setSelectedState;
50
46
  var _useCustom = (0, _utils.useCustom)('Calendar'),
51
47
  locale = _useCustom.locale;
52
48
  var rangeFormatStr = "" + formatStr + character + formatStr;
@@ -55,9 +51,9 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
55
51
  value = _useControlled[0],
56
52
  setValue = _useControlled[1],
57
53
  isControlled = _useControlled[2];
58
- var _useState2 = (0, _react.useState)(_utils2.DateType.Start),
59
- dateType = _useState2[0],
60
- setDateType = _useState2[1];
54
+ var _useState = (0, _react.useState)(_utils2.DateType.Start),
55
+ dateType = _useState[0],
56
+ setDateType = _useState[1];
61
57
  var dateInputOptions = {
62
58
  formatStr: formatStr,
63
59
  locale: dateLocale,
@@ -69,6 +65,10 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
69
65
  var endDateState = (0, _DateInput.useDateInputState)((0, _extends2.default)({}, dateInputOptions, {
70
66
  date: (value === null || value === void 0 ? void 0 : value[1]) || null
71
67
  }));
68
+ var _useFieldCursor = (0, _DateInput.useFieldCursor)(formatStr, valueProp),
69
+ isMoveCursor = _useFieldCursor.isMoveCursor,
70
+ increment = _useFieldCursor.increment,
71
+ reset = _useFieldCursor.reset;
72
72
  var getActiveState = function getActiveState(type) {
73
73
  if (type === void 0) {
74
74
  type = dateType;
@@ -122,8 +122,9 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
122
122
  input: input,
123
123
  direction: direction
124
124
  }));
125
- setSelectionRange(state.selectionStart, state.selectionEnd);
126
125
  setSelectedState(state);
126
+ setSelectionRange(state.selectionStart, state.selectionEnd);
127
+ reset();
127
128
  });
128
129
  var onSegmentValueChange = (0, _utils.useEventCallback)(function (event) {
129
130
  var input = event.target;
@@ -146,6 +147,7 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
146
147
  if (!pattern) {
147
148
  return;
148
149
  }
150
+ increment();
149
151
  var field = getActiveState().getDateField(pattern);
150
152
  var value = parseInt(key, 10);
151
153
  var padValue = parseInt("" + (field.value || '') + key, 10);
@@ -155,10 +157,6 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
155
157
  if ((0, _DateInput.validateDateTime)(field.name, padValue)) {
156
158
  newValue = padValue;
157
159
  }
158
- if (pattern === 'M') {
159
- // Month cannot be less than 1.
160
- newValue = Math.max(1, newValue);
161
- }
162
160
  getActiveState().setDateField(pattern, newValue, function (date) {
163
161
  return handleChange(date, event);
164
162
  });
@@ -174,7 +172,7 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
174
172
  setSelectionRange(nextState.selectionStart, nextState.selectionEnd);
175
173
 
176
174
  // If the field is full value, move the cursor to the next field
177
- if ((0, _DateInput.isFieldFullValue)(formatStr, newValue, pattern) && input.selectionEnd !== input.value.length) {
175
+ if (isMoveCursor(newValue, pattern) && input.selectionEnd !== input.value.length) {
178
176
  onSegmentChange(event, 'right');
179
177
  }
180
178
  });
@@ -190,6 +188,7 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
190
188
  getActiveState().setDateField(selectedState.selectedPattern, null, function (date) {
191
189
  return handleChange(date, event);
192
190
  });
191
+ reset();
193
192
  }
194
193
  });
195
194
  var handleClick = (0, _utils.useEventCallback)(function (event) {
@@ -198,7 +197,7 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
198
197
  return;
199
198
  }
200
199
  var cursorIndex = input.selectionStart === renderedValue.length ? 0 : input.selectionStart;
201
- var dateType = (0, _utils2.getDateType)(renderedValue, character, cursorIndex);
200
+ var dateType = (0, _utils2.getDateType)(renderedValue || rangeFormatStr, character, cursorIndex);
202
201
  var state = (0, _utils2.getInputSelectedState)((0, _extends2.default)({}, keyPressOptions, {
203
202
  dateType: dateType,
204
203
  selectedMonth: getActiveState(dateType).dateField.month,