rsuite 5.2.4 → 5.4.2

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 (511) hide show
  1. package/Avatar/styles/index.less +2 -2
  2. package/AvatarGroup/package.json +7 -0
  3. package/AvatarGroup/styles/index.less +19 -0
  4. package/ButtonGroup/styles/index.less +0 -18
  5. package/CHANGELOG.md +61 -0
  6. package/CheckTreePicker/styles/index.less +14 -1
  7. package/Dropdown/styles/index.less +4 -3
  8. package/Modal/styles/index.less +23 -22
  9. package/Nav/styles/index.less +1 -0
  10. package/Navbar/styles/index.less +19 -5
  11. package/Radio/styles/index.less +6 -0
  12. package/Sidenav/styles/index.less +2 -2
  13. package/Stack/package.json +7 -0
  14. package/Stack/styles/index.less +5 -0
  15. package/TreePicker/styles/index.less +10 -14
  16. package/cjs/@types/common.d.ts +13 -12
  17. package/cjs/@types/utils.d.ts +12 -0
  18. package/cjs/Affix/Affix.js +8 -6
  19. package/cjs/Animation/Transition.d.ts +21 -12
  20. package/cjs/Animation/Transition.js +4 -1
  21. package/cjs/AutoComplete/AutoComplete.js +1 -1
  22. package/cjs/AutoComplete/utils.d.ts +1 -1
  23. package/cjs/Avatar/Avatar.js +10 -3
  24. package/cjs/AvatarGroup/AvatarGroup.d.ts +15 -0
  25. package/cjs/AvatarGroup/AvatarGroup.js +76 -0
  26. package/cjs/AvatarGroup/index.d.ts +3 -0
  27. package/cjs/AvatarGroup/index.js +11 -0
  28. package/cjs/Breadcrumb/Breadcrumb.js +1 -1
  29. package/cjs/Button/Button.js +8 -2
  30. package/cjs/ButtonGroup/ButtonGroup.js +14 -3
  31. package/cjs/ButtonGroup/ButtonGroupContext.d.ts +7 -0
  32. package/cjs/ButtonGroup/ButtonGroupContext.js +13 -0
  33. package/cjs/ButtonGroup/index.d.ts +2 -0
  34. package/cjs/ButtonGroup/index.js +3 -0
  35. package/cjs/Calendar/Calendar.d.ts +4 -4
  36. package/cjs/Calendar/Calendar.js +26 -22
  37. package/cjs/Calendar/CalendarContext.js +1 -1
  38. package/cjs/Calendar/Header.js +1 -3
  39. package/cjs/Calendar/Table.js +1 -1
  40. package/cjs/Calendar/TableRow.js +13 -8
  41. package/cjs/Calendar/TimeDropdown.js +6 -5
  42. package/cjs/Calendar/View.js +9 -5
  43. package/cjs/Calendar/types.d.ts +2 -2
  44. package/cjs/Calendar/useCalendarDate.d.ts +2 -2
  45. package/cjs/Carousel/Carousel.d.ts +1 -1
  46. package/cjs/Carousel/Carousel.js +1 -1
  47. package/cjs/Cascader/Cascader.d.ts +1 -1
  48. package/cjs/Cascader/Cascader.js +10 -10
  49. package/cjs/Cascader/DropdownMenu.d.ts +5 -4
  50. package/cjs/Cascader/utils.d.ts +10 -10
  51. package/cjs/CheckPicker/CheckPicker.d.ts +9 -4
  52. package/cjs/CheckPicker/CheckPicker.js +4 -4
  53. package/cjs/CheckPicker/test/CheckPicker.test.d.ts +1 -0
  54. package/cjs/CheckPicker/test/CheckPicker.test.js +76 -0
  55. package/cjs/CheckTree/index.js +6 -5
  56. package/cjs/CheckTreePicker/CheckTreeNode.d.ts +1 -1
  57. package/cjs/CheckTreePicker/CheckTreeNode.js +7 -9
  58. package/cjs/CheckTreePicker/CheckTreePicker.js +29 -25
  59. package/cjs/CheckTreePicker/utils.d.ts +3 -1
  60. package/cjs/CheckTreePicker/utils.js +12 -10
  61. package/cjs/Checkbox/Checkbox.d.ts +1 -1
  62. package/cjs/Container/Container.js +6 -3
  63. package/cjs/CustomProvider/CustomProvider.d.ts +31 -57
  64. package/cjs/DOMHelper/index.d.ts +12 -12
  65. package/cjs/DatePicker/DatePicker.d.ts +1 -1
  66. package/cjs/DatePicker/DatePicker.js +19 -11
  67. package/cjs/DatePicker/Toolbar.d.ts +12 -9
  68. package/cjs/DatePicker/Toolbar.js +6 -8
  69. package/cjs/DatePicker/types.d.ts +4 -4
  70. package/cjs/DatePicker/utils.d.ts +4 -3
  71. package/cjs/DateRangePicker/Calendar.d.ts +8 -7
  72. package/cjs/DateRangePicker/Calendar.js +1 -1
  73. package/cjs/DateRangePicker/DateRangePicker.d.ts +6 -6
  74. package/cjs/DateRangePicker/DateRangePicker.js +112 -111
  75. package/cjs/DateRangePicker/types.d.ts +2 -1
  76. package/cjs/DateRangePicker/utils.d.ts +6 -6
  77. package/cjs/DateRangePicker/utils.js +7 -2
  78. package/cjs/Disclosure/Disclosure.d.ts +8 -5
  79. package/cjs/Disclosure/Disclosure.js +55 -13
  80. package/cjs/Disclosure/DisclosureButton.d.ts +2 -2
  81. package/cjs/Disclosure/DisclosureButton.js +9 -7
  82. package/cjs/Disclosure/DisclosureContent.js +4 -6
  83. package/cjs/Disclosure/DisclosureContext.d.ts +8 -3
  84. package/cjs/Disclosure/useDisclosureContext.d.ts +2 -0
  85. package/cjs/Disclosure/useDisclosureContext.js +20 -0
  86. package/cjs/Dropdown/Dropdown.d.ts +1 -1
  87. package/cjs/Dropdown/Dropdown.js +1 -1
  88. package/cjs/Dropdown/DropdownContext.d.ts +2 -2
  89. package/cjs/Dropdown/DropdownItem.js +10 -11
  90. package/cjs/Dropdown/DropdownMenu.d.ts +3 -3
  91. package/cjs/Dropdown/DropdownMenu.js +81 -23
  92. package/cjs/Dropdown/DropdownState.d.ts +1 -1
  93. package/cjs/Dropdown/DropdownToggle.js +10 -2
  94. package/cjs/Dropdown/useRenderDropdownItem.d.ts +1 -1
  95. package/cjs/Form/Form.js +1 -1
  96. package/cjs/Form/FormContext.d.ts +1 -1
  97. package/cjs/FormControl/FormControl.d.ts +1 -1
  98. package/cjs/FormControl/FormControl.js +5 -4
  99. package/cjs/FormGroup/FormGroup.d.ts +1 -1
  100. package/cjs/FormGroup/FormGroup.js +9 -4
  101. package/cjs/Input/Input.d.ts +3 -2
  102. package/cjs/InputGroup/InputGroup.d.ts +1 -1
  103. package/cjs/InputNumber/InputNumber.js +6 -2
  104. package/cjs/InputPicker/InputAutosize.js +4 -4
  105. package/cjs/InputPicker/InputPicker.d.ts +2 -2
  106. package/cjs/InputPicker/InputPicker.js +15 -10
  107. package/cjs/List/ListContext.d.ts +1 -1
  108. package/cjs/List/ListContext.js +8 -1
  109. package/cjs/List/helper/AutoScroller.js +4 -2
  110. package/cjs/List/helper/useManager.d.ts +3 -3
  111. package/cjs/List/helper/useManager.js +1 -1
  112. package/cjs/List/helper/useSortHelper.d.ts +3 -3
  113. package/cjs/List/helper/useSortHelper.js +6 -4
  114. package/cjs/List/helper/utils.d.ts +2 -2
  115. package/cjs/MaskedInput/TextMask.d.ts +5 -5
  116. package/cjs/MaskedInput/adjustCaretPosition.d.ts +6 -6
  117. package/cjs/MaskedInput/conformToMask.js +5 -4
  118. package/cjs/MaskedInput/createTextMaskInputElement.d.ts +2 -2
  119. package/cjs/MaskedInput/utilities.d.ts +1 -1
  120. package/cjs/Menu/Menu.js +14 -7
  121. package/cjs/Menu/MenuContext.d.ts +1 -1
  122. package/cjs/Menu/MenuItem.d.ts +1 -1
  123. package/cjs/Menu/MenuItem.js +19 -15
  124. package/cjs/Menu/Menubar.js +8 -8
  125. package/cjs/Menu/useMenu.js +17 -7
  126. package/cjs/Modal/Modal.js +39 -21
  127. package/cjs/Modal/ModalContext.d.ts +2 -2
  128. package/cjs/Modal/utils.d.ts +1 -1
  129. package/cjs/Modal/utils.js +3 -5
  130. package/cjs/MultiCascader/DropdownMenu.d.ts +4 -4
  131. package/cjs/MultiCascader/MultiCascader.js +6 -6
  132. package/cjs/MultiCascader/utils.d.ts +17 -17
  133. package/cjs/Nav/Nav.d.ts +1 -1
  134. package/cjs/Nav/Nav.js +10 -12
  135. package/cjs/Nav/NavContext.d.ts +7 -1
  136. package/cjs/Nav/NavContext.js +1 -0
  137. package/cjs/Nav/NavItem.d.ts +1 -1
  138. package/cjs/Navbar/Navbar.js +1 -1
  139. package/cjs/Navbar/NavbarItem.d.ts +1 -1
  140. package/cjs/Navbar/index.d.ts +1 -0
  141. package/cjs/Navbar/index.js +4 -3
  142. package/cjs/Overlay/Modal.d.ts +2 -2
  143. package/cjs/Overlay/Modal.js +71 -63
  144. package/cjs/Overlay/ModalManager.d.ts +17 -8
  145. package/cjs/Overlay/ModalManager.js +11 -20
  146. package/cjs/Overlay/Overlay.d.ts +3 -3
  147. package/cjs/Overlay/Overlay.js +8 -2
  148. package/cjs/Overlay/OverlayContext.d.ts +6 -0
  149. package/cjs/Overlay/OverlayContext.js +14 -0
  150. package/cjs/Overlay/OverlayTrigger.d.ts +11 -11
  151. package/cjs/Overlay/OverlayTrigger.js +21 -7
  152. package/cjs/Overlay/Position.d.ts +4 -4
  153. package/cjs/Overlay/Position.js +14 -8
  154. package/cjs/Overlay/positionUtils.d.ts +1 -1
  155. package/cjs/Overlay/positionUtils.js +8 -8
  156. package/cjs/Pagination/Pagination.d.ts +1 -1
  157. package/cjs/Pagination/PaginationButton.d.ts +3 -3
  158. package/cjs/Pagination/PaginationGroup.js +5 -3
  159. package/cjs/Panel/Panel.d.ts +1 -1
  160. package/cjs/Panel/Panel.js +2 -2
  161. package/cjs/PanelGroup/PanelGroup.d.ts +2 -2
  162. package/cjs/PanelGroup/PanelGroup.js +8 -5
  163. package/cjs/Picker/DropdownMenu.d.ts +8 -5
  164. package/cjs/Picker/DropdownMenu.js +5 -5
  165. package/cjs/Picker/PickerOverlay.js +4 -3
  166. package/cjs/Picker/PickerToggle.js +4 -3
  167. package/cjs/Picker/PickerToggleTrigger.d.ts +2 -6
  168. package/cjs/Picker/SearchBar.d.ts +1 -1
  169. package/cjs/Picker/SelectedElement.js +2 -1
  170. package/cjs/Picker/propTypes.d.ts +5 -7
  171. package/cjs/Picker/propTypes.js +4 -3
  172. package/cjs/Picker/utils.d.ts +11 -11
  173. package/cjs/Picker/utils.js +22 -18
  174. package/cjs/Placeholder/PlaceholderGrid.js +1 -1
  175. package/cjs/Plaintext/Plaintext.js +2 -1
  176. package/cjs/Radio/Radio.d.ts +1 -1
  177. package/cjs/RadioGroup/RadioGroup.d.ts +2 -2
  178. package/cjs/RadioGroup/RadioGroup.js +1 -1
  179. package/cjs/RangeSlider/RangeSlider.d.ts +2 -2
  180. package/cjs/RangeSlider/RangeSlider.js +6 -4
  181. package/cjs/Rate/Character.js +4 -2
  182. package/cjs/Rate/Rate.js +2 -1
  183. package/cjs/Ripple/Ripple.js +1 -1
  184. package/cjs/SelectPicker/SelectPicker.d.ts +12 -5
  185. package/cjs/SelectPicker/SelectPicker.js +8 -8
  186. package/cjs/SelectPicker/index.d.ts +1 -1
  187. package/cjs/SelectPicker/test/SelectPicker.test.d.ts +1 -0
  188. package/cjs/SelectPicker/test/SelectPicker.test.js +62 -0
  189. package/cjs/Sidenav/Node.d.ts +1 -1
  190. package/cjs/Sidenav/Sidenav.d.ts +4 -4
  191. package/cjs/Sidenav/Sidenav.js +5 -2
  192. package/cjs/Sidenav/SidenavDropdown.js +11 -8
  193. package/cjs/Sidenav/SidenavDropdownItem.js +10 -5
  194. package/cjs/Sidenav/SidenavDropdownMenu.js +9 -5
  195. package/cjs/Sidenav/SidenavItem.d.ts +1 -1
  196. package/cjs/Sidenav/SidenavItem.js +4 -0
  197. package/cjs/Slider/Graduated.d.ts +5 -5
  198. package/cjs/Slider/Handle.d.ts +1 -1
  199. package/cjs/Slider/Handle.js +10 -6
  200. package/cjs/Slider/Mark.d.ts +1 -1
  201. package/cjs/Slider/Slider.d.ts +1 -1
  202. package/cjs/Slider/Slider.js +2 -2
  203. package/cjs/Slider/utils.d.ts +2 -1
  204. package/cjs/Slider/utils.js +4 -5
  205. package/cjs/Stack/Stack.d.ts +26 -0
  206. package/cjs/Stack/Stack.js +86 -0
  207. package/cjs/Stack/index.d.ts +3 -0
  208. package/cjs/Stack/index.js +11 -0
  209. package/cjs/Steps/StepItem.js +1 -1
  210. package/cjs/TagInput/index.js +1 -1
  211. package/cjs/Toggle/Toggle.js +5 -4
  212. package/cjs/Tree/Tree.d.ts +3 -2
  213. package/cjs/Tree/Tree.js +6 -5
  214. package/cjs/Tree/TreeContext.d.ts +0 -1
  215. package/cjs/TreePicker/TreeNode.js +7 -22
  216. package/cjs/TreePicker/TreePicker.js +32 -52
  217. package/cjs/Uploader/UploadFileItem.d.ts +1 -1
  218. package/cjs/Uploader/UploadFileItem.js +2 -2
  219. package/cjs/Uploader/UploadTrigger.d.ts +1 -1
  220. package/cjs/Uploader/UploadTrigger.js +2 -3
  221. package/cjs/Uploader/Uploader.d.ts +5 -5
  222. package/cjs/Uploader/Uploader.js +1 -2
  223. package/cjs/index.d.ts +6 -2
  224. package/cjs/index.js +13 -5
  225. package/cjs/locales/index.d.ts +3 -3
  226. package/cjs/toaster/ToastContainer.d.ts +1 -1
  227. package/cjs/toaster/ToastContainer.js +1 -1
  228. package/cjs/toaster/toaster.js +3 -1
  229. package/cjs/utils/BrowserDetection.js +1 -1
  230. package/cjs/utils/ReactChildren.d.ts +2 -2
  231. package/cjs/utils/ajaxUpload.d.ts +1 -1
  232. package/cjs/utils/ajaxUpload.js +5 -4
  233. package/cjs/utils/appendTooltip.d.ts +1 -1
  234. package/cjs/utils/constants.d.ts +4 -4
  235. package/cjs/utils/createChainedFunction.d.ts +1 -1
  236. package/cjs/utils/getDataGroupBy.d.ts +1 -1
  237. package/cjs/utils/index.d.ts +1 -0
  238. package/cjs/utils/index.js +7 -2
  239. package/cjs/utils/mergeRefs.d.ts +2 -2
  240. package/cjs/utils/previewFile.d.ts +1 -1
  241. package/cjs/utils/propTypeChecker.d.ts +6 -2
  242. package/cjs/utils/propTypeChecker.js +7 -6
  243. package/cjs/utils/reactToString.d.ts +2 -1
  244. package/cjs/utils/statusIcons.d.ts +1 -1
  245. package/cjs/utils/stringToObject.d.ts +1 -1
  246. package/cjs/utils/treeUtils.d.ts +35 -32
  247. package/cjs/utils/treeUtils.js +46 -23
  248. package/cjs/utils/useControlled.d.ts +6 -1
  249. package/cjs/utils/useControlled.js +0 -8
  250. package/cjs/utils/useCustom.js +6 -4
  251. package/cjs/utils/useFocus.d.ts +2 -2
  252. package/cjs/utils/useMount.d.ts +2 -0
  253. package/cjs/utils/useMount.js +19 -0
  254. package/cjs/utils/usePortal.d.ts +2 -2
  255. package/cjs/utils/useRootClose.d.ts +2 -2
  256. package/cjs/utils/useTimeout.d.ts +1 -1
  257. package/cjs/utils/useTimeout.js +5 -3
  258. package/dist/rsuite-rtl.css +95 -210
  259. package/dist/rsuite-rtl.min.css +1 -1
  260. package/dist/rsuite-rtl.min.css.map +1 -1
  261. package/dist/rsuite.css +95 -210
  262. package/dist/rsuite.js +214 -115
  263. package/dist/rsuite.js.map +1 -1
  264. package/dist/rsuite.min.css +1 -1
  265. package/dist/rsuite.min.css.map +1 -1
  266. package/dist/rsuite.min.js +1 -1
  267. package/dist/rsuite.min.js.map +1 -1
  268. package/esm/@types/common.d.ts +13 -12
  269. package/esm/@types/utils.d.ts +12 -0
  270. package/esm/Affix/Affix.js +9 -7
  271. package/esm/Animation/Transition.d.ts +21 -12
  272. package/esm/Animation/Transition.js +4 -1
  273. package/esm/AutoComplete/AutoComplete.js +1 -1
  274. package/esm/AutoComplete/utils.d.ts +1 -1
  275. package/esm/Avatar/Avatar.js +7 -3
  276. package/esm/AvatarGroup/AvatarGroup.d.ts +15 -0
  277. package/esm/AvatarGroup/AvatarGroup.js +57 -0
  278. package/esm/AvatarGroup/index.d.ts +3 -0
  279. package/esm/AvatarGroup/index.js +2 -0
  280. package/esm/Breadcrumb/Breadcrumb.js +1 -1
  281. package/esm/Button/Button.js +6 -2
  282. package/esm/ButtonGroup/ButtonGroup.js +11 -3
  283. package/esm/ButtonGroup/ButtonGroupContext.d.ts +7 -0
  284. package/esm/ButtonGroup/ButtonGroupContext.js +3 -0
  285. package/esm/ButtonGroup/index.d.ts +2 -0
  286. package/esm/ButtonGroup/index.js +2 -0
  287. package/esm/Calendar/Calendar.d.ts +4 -4
  288. package/esm/Calendar/Calendar.js +27 -23
  289. package/esm/Calendar/CalendarContext.js +1 -1
  290. package/esm/Calendar/Header.js +1 -3
  291. package/esm/Calendar/Table.js +1 -1
  292. package/esm/Calendar/TableRow.js +14 -9
  293. package/esm/Calendar/TimeDropdown.js +5 -4
  294. package/esm/Calendar/View.js +10 -6
  295. package/esm/Calendar/types.d.ts +2 -2
  296. package/esm/Calendar/useCalendarDate.d.ts +2 -2
  297. package/esm/Carousel/Carousel.d.ts +1 -1
  298. package/esm/Carousel/Carousel.js +1 -1
  299. package/esm/Cascader/Cascader.d.ts +1 -1
  300. package/esm/Cascader/Cascader.js +10 -10
  301. package/esm/Cascader/DropdownMenu.d.ts +5 -4
  302. package/esm/Cascader/utils.d.ts +10 -10
  303. package/esm/CheckPicker/CheckPicker.d.ts +9 -4
  304. package/esm/CheckPicker/CheckPicker.js +4 -4
  305. package/esm/CheckPicker/test/CheckPicker.test.d.ts +1 -0
  306. package/esm/CheckPicker/test/CheckPicker.test.js +64 -0
  307. package/esm/CheckTree/index.js +7 -6
  308. package/esm/CheckTreePicker/CheckTreeNode.d.ts +1 -1
  309. package/esm/CheckTreePicker/CheckTreeNode.js +4 -7
  310. package/esm/CheckTreePicker/CheckTreePicker.js +28 -23
  311. package/esm/CheckTreePicker/utils.d.ts +3 -1
  312. package/esm/CheckTreePicker/utils.js +12 -10
  313. package/esm/Checkbox/Checkbox.d.ts +1 -1
  314. package/esm/Container/Container.js +7 -4
  315. package/esm/CustomProvider/CustomProvider.d.ts +31 -57
  316. package/esm/DOMHelper/index.d.ts +12 -12
  317. package/esm/DatePicker/DatePicker.d.ts +1 -1
  318. package/esm/DatePicker/DatePicker.js +18 -11
  319. package/esm/DatePicker/Toolbar.d.ts +12 -9
  320. package/esm/DatePicker/Toolbar.js +6 -8
  321. package/esm/DatePicker/types.d.ts +4 -4
  322. package/esm/DatePicker/utils.d.ts +4 -3
  323. package/esm/DateRangePicker/Calendar.d.ts +8 -7
  324. package/esm/DateRangePicker/Calendar.js +1 -1
  325. package/esm/DateRangePicker/DateRangePicker.d.ts +6 -6
  326. package/esm/DateRangePicker/DateRangePicker.js +112 -111
  327. package/esm/DateRangePicker/types.d.ts +2 -1
  328. package/esm/DateRangePicker/utils.d.ts +6 -6
  329. package/esm/DateRangePicker/utils.js +6 -2
  330. package/esm/Disclosure/Disclosure.d.ts +8 -5
  331. package/esm/Disclosure/Disclosure.js +56 -15
  332. package/esm/Disclosure/DisclosureButton.d.ts +2 -2
  333. package/esm/Disclosure/DisclosureButton.js +8 -7
  334. package/esm/Disclosure/DisclosureContent.js +5 -7
  335. package/esm/Disclosure/DisclosureContext.d.ts +8 -3
  336. package/esm/Disclosure/useDisclosureContext.d.ts +2 -0
  337. package/esm/Disclosure/useDisclosureContext.js +11 -0
  338. package/esm/Dropdown/Dropdown.d.ts +1 -1
  339. package/esm/Dropdown/Dropdown.js +1 -1
  340. package/esm/Dropdown/DropdownContext.d.ts +2 -2
  341. package/esm/Dropdown/DropdownItem.js +10 -10
  342. package/esm/Dropdown/DropdownMenu.d.ts +3 -3
  343. package/esm/Dropdown/DropdownMenu.js +82 -24
  344. package/esm/Dropdown/DropdownState.d.ts +1 -1
  345. package/esm/Dropdown/DropdownToggle.js +9 -2
  346. package/esm/Dropdown/useRenderDropdownItem.d.ts +1 -1
  347. package/esm/Form/Form.js +1 -1
  348. package/esm/Form/FormContext.d.ts +1 -1
  349. package/esm/FormControl/FormControl.d.ts +1 -1
  350. package/esm/FormControl/FormControl.js +5 -4
  351. package/esm/FormGroup/FormGroup.d.ts +1 -1
  352. package/esm/FormGroup/FormGroup.js +7 -4
  353. package/esm/Input/Input.d.ts +3 -2
  354. package/esm/InputGroup/InputGroup.d.ts +1 -1
  355. package/esm/InputNumber/InputNumber.js +6 -2
  356. package/esm/InputPicker/InputAutosize.js +4 -4
  357. package/esm/InputPicker/InputPicker.d.ts +2 -2
  358. package/esm/InputPicker/InputPicker.js +15 -10
  359. package/esm/List/ListContext.d.ts +1 -1
  360. package/esm/List/ListContext.js +7 -1
  361. package/esm/List/helper/AutoScroller.js +4 -2
  362. package/esm/List/helper/useManager.d.ts +3 -3
  363. package/esm/List/helper/useManager.js +1 -1
  364. package/esm/List/helper/useSortHelper.d.ts +3 -3
  365. package/esm/List/helper/useSortHelper.js +6 -4
  366. package/esm/List/helper/utils.d.ts +2 -2
  367. package/esm/MaskedInput/TextMask.d.ts +5 -5
  368. package/esm/MaskedInput/adjustCaretPosition.d.ts +6 -6
  369. package/esm/MaskedInput/conformToMask.js +5 -4
  370. package/esm/MaskedInput/createTextMaskInputElement.d.ts +2 -2
  371. package/esm/MaskedInput/utilities.d.ts +1 -1
  372. package/esm/Menu/Menu.js +13 -7
  373. package/esm/Menu/MenuContext.d.ts +1 -1
  374. package/esm/Menu/MenuItem.d.ts +1 -1
  375. package/esm/Menu/MenuItem.js +18 -15
  376. package/esm/Menu/Menubar.js +7 -8
  377. package/esm/Menu/useMenu.js +17 -7
  378. package/esm/Modal/Modal.js +41 -23
  379. package/esm/Modal/ModalContext.d.ts +2 -2
  380. package/esm/Modal/utils.d.ts +1 -1
  381. package/esm/Modal/utils.js +3 -5
  382. package/esm/MultiCascader/DropdownMenu.d.ts +4 -4
  383. package/esm/MultiCascader/MultiCascader.js +6 -6
  384. package/esm/MultiCascader/utils.d.ts +17 -17
  385. package/esm/Nav/Nav.d.ts +1 -1
  386. package/esm/Nav/Nav.js +11 -13
  387. package/esm/Nav/NavContext.d.ts +7 -1
  388. package/esm/Nav/NavContext.js +1 -0
  389. package/esm/Nav/NavItem.d.ts +1 -1
  390. package/esm/Navbar/Navbar.js +1 -1
  391. package/esm/Navbar/NavbarItem.d.ts +1 -1
  392. package/esm/Navbar/index.d.ts +1 -0
  393. package/esm/Navbar/index.js +1 -0
  394. package/esm/Overlay/Modal.d.ts +2 -2
  395. package/esm/Overlay/Modal.js +72 -64
  396. package/esm/Overlay/ModalManager.d.ts +17 -8
  397. package/esm/Overlay/ModalManager.js +11 -20
  398. package/esm/Overlay/Overlay.d.ts +3 -3
  399. package/esm/Overlay/Overlay.js +8 -3
  400. package/esm/Overlay/OverlayContext.d.ts +6 -0
  401. package/esm/Overlay/OverlayContext.js +4 -0
  402. package/esm/Overlay/OverlayTrigger.d.ts +11 -11
  403. package/esm/Overlay/OverlayTrigger.js +21 -8
  404. package/esm/Overlay/Position.d.ts +4 -4
  405. package/esm/Overlay/Position.js +14 -8
  406. package/esm/Overlay/positionUtils.d.ts +1 -1
  407. package/esm/Overlay/positionUtils.js +6 -6
  408. package/esm/Pagination/Pagination.d.ts +1 -1
  409. package/esm/Pagination/PaginationButton.d.ts +3 -3
  410. package/esm/Pagination/PaginationGroup.js +5 -3
  411. package/esm/Panel/Panel.d.ts +1 -1
  412. package/esm/Panel/Panel.js +2 -2
  413. package/esm/PanelGroup/PanelGroup.d.ts +2 -2
  414. package/esm/PanelGroup/PanelGroup.js +9 -6
  415. package/esm/Picker/DropdownMenu.d.ts +8 -5
  416. package/esm/Picker/DropdownMenu.js +5 -5
  417. package/esm/Picker/PickerOverlay.js +4 -3
  418. package/esm/Picker/PickerToggle.js +4 -3
  419. package/esm/Picker/PickerToggleTrigger.d.ts +2 -6
  420. package/esm/Picker/SearchBar.d.ts +1 -1
  421. package/esm/Picker/SelectedElement.js +2 -1
  422. package/esm/Picker/propTypes.d.ts +5 -7
  423. package/esm/Picker/propTypes.js +4 -3
  424. package/esm/Picker/utils.d.ts +11 -11
  425. package/esm/Picker/utils.js +21 -18
  426. package/esm/Placeholder/PlaceholderGrid.js +1 -1
  427. package/esm/Plaintext/Plaintext.js +2 -1
  428. package/esm/Radio/Radio.d.ts +1 -1
  429. package/esm/RadioGroup/RadioGroup.d.ts +2 -2
  430. package/esm/RadioGroup/RadioGroup.js +1 -1
  431. package/esm/RangeSlider/RangeSlider.d.ts +2 -2
  432. package/esm/RangeSlider/RangeSlider.js +5 -4
  433. package/esm/Rate/Character.js +3 -2
  434. package/esm/Rate/Rate.js +2 -1
  435. package/esm/Ripple/Ripple.js +1 -1
  436. package/esm/SelectPicker/SelectPicker.d.ts +12 -5
  437. package/esm/SelectPicker/SelectPicker.js +8 -8
  438. package/esm/SelectPicker/index.d.ts +1 -1
  439. package/esm/SelectPicker/test/SelectPicker.test.d.ts +1 -0
  440. package/esm/SelectPicker/test/SelectPicker.test.js +52 -0
  441. package/esm/Sidenav/Node.d.ts +1 -1
  442. package/esm/Sidenav/Sidenav.d.ts +4 -4
  443. package/esm/Sidenav/Sidenav.js +5 -2
  444. package/esm/Sidenav/SidenavDropdown.js +11 -7
  445. package/esm/Sidenav/SidenavDropdownItem.js +11 -5
  446. package/esm/Sidenav/SidenavDropdownMenu.js +9 -5
  447. package/esm/Sidenav/SidenavItem.d.ts +1 -1
  448. package/esm/Sidenav/SidenavItem.js +4 -0
  449. package/esm/Slider/Graduated.d.ts +5 -5
  450. package/esm/Slider/Handle.d.ts +1 -1
  451. package/esm/Slider/Handle.js +10 -6
  452. package/esm/Slider/Mark.d.ts +1 -1
  453. package/esm/Slider/Slider.d.ts +1 -1
  454. package/esm/Slider/Slider.js +2 -2
  455. package/esm/Slider/utils.d.ts +2 -1
  456. package/esm/Slider/utils.js +5 -2
  457. package/esm/Stack/Stack.d.ts +26 -0
  458. package/esm/Stack/Stack.js +71 -0
  459. package/esm/Stack/index.d.ts +3 -0
  460. package/esm/Stack/index.js +2 -0
  461. package/esm/Steps/StepItem.js +1 -1
  462. package/esm/TagInput/index.js +1 -1
  463. package/esm/Toggle/Toggle.js +5 -4
  464. package/esm/Tree/Tree.d.ts +3 -2
  465. package/esm/Tree/Tree.js +7 -6
  466. package/esm/Tree/TreeContext.d.ts +0 -1
  467. package/esm/TreePicker/TreeNode.js +6 -21
  468. package/esm/TreePicker/TreePicker.js +31 -50
  469. package/esm/Uploader/UploadFileItem.d.ts +1 -1
  470. package/esm/Uploader/UploadFileItem.js +2 -2
  471. package/esm/Uploader/UploadTrigger.d.ts +1 -1
  472. package/esm/Uploader/UploadTrigger.js +2 -3
  473. package/esm/Uploader/Uploader.d.ts +5 -5
  474. package/esm/Uploader/Uploader.js +1 -2
  475. package/esm/index.d.ts +6 -2
  476. package/esm/index.js +3 -1
  477. package/esm/locales/index.d.ts +3 -3
  478. package/esm/toaster/ToastContainer.d.ts +1 -1
  479. package/esm/toaster/ToastContainer.js +1 -1
  480. package/esm/toaster/toaster.js +3 -1
  481. package/esm/utils/BrowserDetection.js +1 -1
  482. package/esm/utils/ReactChildren.d.ts +2 -2
  483. package/esm/utils/ajaxUpload.d.ts +1 -1
  484. package/esm/utils/ajaxUpload.js +5 -4
  485. package/esm/utils/appendTooltip.d.ts +1 -1
  486. package/esm/utils/constants.d.ts +4 -4
  487. package/esm/utils/createChainedFunction.d.ts +1 -1
  488. package/esm/utils/getDataGroupBy.d.ts +1 -1
  489. package/esm/utils/index.d.ts +1 -0
  490. package/esm/utils/index.js +2 -1
  491. package/esm/utils/mergeRefs.d.ts +2 -2
  492. package/esm/utils/previewFile.d.ts +1 -1
  493. package/esm/utils/propTypeChecker.d.ts +6 -2
  494. package/esm/utils/propTypeChecker.js +7 -6
  495. package/esm/utils/reactToString.d.ts +2 -1
  496. package/esm/utils/statusIcons.d.ts +1 -1
  497. package/esm/utils/stringToObject.d.ts +1 -1
  498. package/esm/utils/treeUtils.d.ts +35 -32
  499. package/esm/utils/treeUtils.js +45 -21
  500. package/esm/utils/useControlled.d.ts +6 -1
  501. package/esm/utils/useControlled.js +0 -8
  502. package/esm/utils/useCustom.js +6 -4
  503. package/esm/utils/useFocus.d.ts +2 -2
  504. package/esm/utils/useMount.d.ts +2 -0
  505. package/esm/utils/useMount.js +13 -0
  506. package/esm/utils/usePortal.d.ts +2 -2
  507. package/esm/utils/useRootClose.d.ts +2 -2
  508. package/esm/utils/useTimeout.d.ts +1 -1
  509. package/esm/utils/useTimeout.js +5 -3
  510. package/package.json +2 -2
  511. package/styles/index.less +2 -0
@@ -48,7 +48,7 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (props, ref) {
48
48
  setCalendarState(undefined);
49
49
  }, [index, onChangeCalendarDate]);
50
50
  var handleChangePageTime = useCallback(function (nextPageDate) {
51
- onChangeCalendarTime(index, nextPageDate);
51
+ onChangeCalendarTime === null || onChangeCalendarTime === void 0 ? void 0 : onChangeCalendarTime(index, nextPageDate);
52
52
  }, [index, onChangeCalendarTime]);
53
53
  var handleToggleMeridian = useCallback(function (event) {
54
54
  onToggleMeridian(index, event);
@@ -1,14 +1,14 @@
1
1
  import React from 'react';
2
2
  import { FormControlBaseProps, PickerBaseProps } from '../@types/common';
3
3
  import { PickerComponent } from '../Picker';
4
- import { DisabledDateFunction, RangeType, ValueType } from './types';
5
- export interface DateRangePickerProps extends PickerBaseProps, FormControlBaseProps<ValueType> {
4
+ import { DisabledDateFunction, RangeType, DateRange } from './types';
5
+ export interface DateRangePickerProps extends PickerBaseProps, FormControlBaseProps<DateRange | null> {
6
6
  /** Configure shortcut options */
7
7
  ranges?: RangeType[];
8
8
  /** Format date */
9
9
  format?: string;
10
10
  /** The date range that will be selected when you click on the date */
11
- hoverRange?: 'week' | 'month' | ((date: Date) => ValueType);
11
+ hoverRange?: 'week' | 'month' | ((date: Date) => DateRange);
12
12
  /** Whether to click once on selected date range,Can be used with hoverRange */
13
13
  oneTap?: boolean;
14
14
  /** ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day */
@@ -22,7 +22,7 @@ export interface DateRangePickerProps extends PickerBaseProps, FormControlBasePr
22
22
  /** Meridian format */
23
23
  showMeridian?: boolean;
24
24
  /** Set default date for calendar */
25
- defaultCalendarValue?: ValueType;
25
+ defaultCalendarValue?: DateRange;
26
26
  /** The character that separates two dates */
27
27
  character?: string;
28
28
  /** Disabled date */
@@ -30,11 +30,11 @@ export interface DateRangePickerProps extends PickerBaseProps, FormControlBasePr
30
30
  /** Called when the option is selected */
31
31
  onSelect?: (date: Date, event?: React.SyntheticEvent) => void;
32
32
  /** Called after clicking the OK button */
33
- onOk?: (date: ValueType, event: React.SyntheticEvent) => void;
33
+ onOk?: (date: DateRange, event: React.SyntheticEvent) => void;
34
34
  /** Called when clean */
35
35
  onClean?: (event: React.MouseEvent) => void;
36
36
  /** Custom render value */
37
- renderValue?: (value: ValueType, format: string) => React.ReactNode;
37
+ renderValue?: (value: DateRange, format: string) => React.ReactNode;
38
38
  }
39
39
  export interface DateRangePicker extends PickerComponent<DateRangePickerProps> {
40
40
  /** Allow the maximum number of days specified, other dates are disabled */
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  import IconCalendar from '@rsuite/icons/legacy/Calendar';
4
- import isUndefined from 'lodash/isUndefined';
4
+ import isNil from 'lodash/isNil';
5
5
  import omit from 'lodash/omit';
6
6
  import partial from 'lodash/partial';
7
7
  import pick from 'lodash/pick';
@@ -16,7 +16,7 @@ import Calendar from './Calendar';
16
16
  import * as disabledDateUtils from './disabledDateUtils';
17
17
  import { getCalendarDate, getMonthHoverRange, getWeekHoverRange, isSameRange, setTimingMargin } from './utils';
18
18
  var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
19
- var _ref, _merge;
19
+ var _ref, _ref2, _merge;
20
20
 
21
21
  var _props$as = props.as,
22
22
  Component = _props$as === void 0 ? 'div' : _props$as,
@@ -36,7 +36,8 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
36
36
  _props$format = props.format,
37
37
  formatStr = _props$format === void 0 ? 'yyyy-MM-dd' : _props$format,
38
38
  hoverRange = props.hoverRange,
39
- isoWeek = props.isoWeek,
39
+ _props$isoWeek = props.isoWeek,
40
+ isoWeek = _props$isoWeek === void 0 ? false : _props$isoWeek,
40
41
  _props$limitEndYear = props.limitEndYear,
41
42
  limitEndYear = _props$limitEndYear === void 0 ? 1000 : _props$limitEndYear,
42
43
  overrideLocale = props.locale,
@@ -78,7 +79,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
78
79
 
79
80
  var rangeFormatStr = "" + formatStr + character + formatStr;
80
81
 
81
- var _useControlled = useControlled(valueProp, defaultValue !== null && defaultValue !== void 0 ? defaultValue : []),
82
+ var _useControlled = useControlled(valueProp, defaultValue !== null && defaultValue !== void 0 ? defaultValue : null),
82
83
  value = _useControlled[0],
83
84
  setValue = _useControlled[1];
84
85
  /**
@@ -100,17 +101,17 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
100
101
  */
101
102
 
102
103
  var _useState = useState((_ref = valueProp !== null && valueProp !== void 0 ? valueProp : defaultValue) !== null && _ref !== void 0 ? _ref : []),
103
- selectValue = _useState[0],
104
- setSelectValue = _useState[1]; // The date of the current hover, used to reduce the calculation of `handleMouseMove`
104
+ selectedDates = _useState[0],
105
+ setSelectedDates = _useState[1]; // The date of the current hover, used to reduce the calculation of `handleMouseMove`
105
106
 
106
107
 
107
- var _useState2 = useState([]),
108
- hoverValue = _useState2[0],
109
- setHoverValue = _useState2[1]; // The displayed calendar panel is rendered based on this value.
108
+ var _useState2 = useState(null),
109
+ hoverDateRange = _useState2[0],
110
+ setHoverDateRange = _useState2[1]; // The displayed calendar panel is rendered based on this value.
110
111
 
111
112
 
112
113
  var _useState3 = useState(getCalendarDate({
113
- value: valueProp !== null && valueProp !== void 0 ? valueProp : defaultCalendarValue
114
+ value: (_ref2 = valueProp !== null && valueProp !== void 0 ? valueProp : defaultCalendarValue) !== null && _ref2 !== void 0 ? _ref2 : null
114
115
  })),
115
116
  calendarDate = _useState3[0],
116
117
  setCalendarDate = _useState3[1];
@@ -138,18 +139,18 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
138
139
  }, []); // if valueProp changed then update selectValue/hoverValue
139
140
 
140
141
  useEffect(function () {
141
- setSelectValue(valueProp !== null && valueProp !== void 0 ? valueProp : []);
142
- setHoverValue(valueProp !== null && valueProp !== void 0 ? valueProp : []);
142
+ setSelectedDates(valueProp !== null && valueProp !== void 0 ? valueProp : []);
143
+ setHoverDateRange(valueProp !== null && valueProp !== void 0 ? valueProp : null);
143
144
  }, [valueProp]);
144
145
 
145
146
  var _useState5 = useState(false),
146
147
  isPickerToggleActive = _useState5[0],
147
148
  setPickerToggleActive = _useState5[1];
148
149
 
149
- var rootRef = useRef();
150
- var overlayRef = useRef();
151
- var targetRef = useRef();
152
- var triggerRef = useRef();
150
+ var rootRef = useRef(null);
151
+ var overlayRef = useRef(null);
152
+ var targetRef = useRef(null);
153
+ var triggerRef = useRef(null);
153
154
  var handleCloseDropdown = useCallback(function () {
154
155
  var _triggerRef$current, _triggerRef$current$c;
155
156
 
@@ -162,14 +163,10 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
162
163
  rootRef: rootRef
163
164
  });
164
165
  var getDisplayString = useCallback(function (nextValue, isPlaintext) {
165
- var _nextValue, _nextValue2;
166
+ var _nextValue$, _nextValue$2;
166
167
 
167
- if (nextValue === void 0) {
168
- nextValue = value;
169
- }
170
-
171
- var startDate = (_nextValue = nextValue) === null || _nextValue === void 0 ? void 0 : _nextValue[0];
172
- var endDate = (_nextValue2 = nextValue) === null || _nextValue2 === void 0 ? void 0 : _nextValue2[1];
168
+ var startDate = (_nextValue$ = nextValue === null || nextValue === void 0 ? void 0 : nextValue[0]) !== null && _nextValue$ !== void 0 ? _nextValue$ : null;
169
+ var endDate = (_nextValue$2 = nextValue === null || nextValue === void 0 ? void 0 : nextValue[1]) !== null && _nextValue$2 !== void 0 ? _nextValue$2 : null;
173
170
 
174
171
  if (startDate && endDate) {
175
172
  var displayValue = [startDate, endDate].sort(compareAsc);
@@ -188,35 +185,33 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
188
185
  }
189
186
 
190
187
  return isPlaintext ? '' : placeholder || rangeFormatStr;
191
- }, [character, formatDate, formatStr, placeholder, rangeFormatStr, renderValue, value]);
188
+ }, [character, formatDate, formatStr, placeholder, rangeFormatStr, renderValue]);
192
189
  /**
193
190
  * preset hover range
194
191
  */
195
192
 
196
193
  var getHoverRangeValue = useCallback(function (date) {
197
- if (!hoverRange) {
198
- return [];
199
- }
200
-
201
- var hoverRangeFunc = hoverRange;
194
+ function getHoverRangeFunc() {
195
+ if (hoverRange === 'week') {
196
+ return partial(getWeekHoverRange, isoWeek);
197
+ } else if (hoverRange === 'month') {
198
+ return getMonthHoverRange;
199
+ }
202
200
 
203
- if (hoverRange === 'week') {
204
- hoverRangeFunc = partial(getWeekHoverRange, isoWeek);
201
+ return hoverRange;
205
202
  }
206
203
 
207
- if (hoverRangeFunc === 'month') {
208
- hoverRangeFunc = getMonthHoverRange;
209
- }
204
+ var hoverRangeFunc = getHoverRangeFunc();
210
205
 
211
- if (typeof hoverRangeFunc !== 'function') {
212
- return [];
206
+ if (isNil(hoverRangeFunc)) {
207
+ return null;
213
208
  }
214
209
 
215
210
  var hoverValues = hoverRangeFunc(date);
216
211
  var isHoverRangeValid = hoverValues instanceof Array && hoverValues.length === 2;
217
212
 
218
213
  if (!isHoverRangeValid) {
219
- return [];
214
+ return null;
220
215
  }
221
216
 
222
217
  if (DateUtils.isAfter(hoverValues[0], hoverValues[1])) {
@@ -225,13 +220,13 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
225
220
 
226
221
  return hoverValues;
227
222
  }, [hoverRange, isoWeek]);
228
- var handleValueUpdate = useCallback(function (event, nextSelectValue, closeOverlay) {
223
+ var handleValueUpdate = useCallback(function (event, nextValue, closeOverlay) {
229
224
  if (closeOverlay === void 0) {
230
225
  closeOverlay = true;
231
226
  }
232
227
 
233
- var nextValue = !isUndefined(nextSelectValue) ? nextSelectValue : selectValue;
234
- setSelectValue(nextValue || []);
228
+ // If nextValue is null, it means that the user is erasing the selected dates.
229
+ setSelectedDates(nextValue !== null && nextValue !== void 0 ? nextValue : []);
235
230
 
236
231
  if (!isSameRange(nextValue, value, formatStr)) {
237
232
  setValue(nextValue);
@@ -242,40 +237,45 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
242
237
  if (closeOverlay !== false) {
243
238
  handleCloseDropdown();
244
239
  }
245
- }, [formatStr, handleCloseDropdown, onChange, selectValue, setValue, value]);
240
+ }, [formatStr, handleCloseDropdown, onChange, setValue, value]);
246
241
  /**
247
242
  * Select the date range. If oneTap is not set, you need to click twice to select the start time and end time.
248
243
  * The MouseMove event is called between the first click and the second click to update the selection state.
249
244
  */
250
245
 
251
246
  var handleMouseMove = useCallback(function (date) {
252
- var hoverRangeValue = getHoverRangeValue(date); // After the first click
247
+ var nextHoverDateRange = getHoverRangeValue(date); // If hasDoneSelect is false,
248
+ // it means there's already one selected date
249
+ // and waiting for user to select the second date to complete the selection.
253
250
 
254
251
  if (!hasDoneSelect.current) {
255
- // If hoverRange is set, you need to change the value of hoverValue according to the rules
256
- if (hoverRange) {
257
- var nextHoverValue = [selectRangeValueRef.current[0], hoverRangeValue[1]];
252
+ // If `hoverRange` is set, you need to change the value of hoverDateRange according to the rules
253
+ if (!isNil(nextHoverDateRange)) {
254
+ var nextSelectedDates = [selectRangeValueRef.current[0], nextHoverDateRange[1]];
258
255
 
259
- if (DateUtils.isBefore(hoverRangeValue[0], selectRangeValueRef.current[0])) {
260
- nextHoverValue[0] = hoverRangeValue[0];
261
- nextHoverValue[1] = selectRangeValueRef.current[1];
256
+ if (DateUtils.isBefore(nextHoverDateRange[0], selectRangeValueRef.current[0])) {
257
+ nextSelectedDates = [nextHoverDateRange[0], selectRangeValueRef.current[1]];
262
258
  }
263
259
 
264
- setSelectValue(nextHoverValue);
260
+ setSelectedDates(nextSelectedDates);
265
261
  } else {
266
- setHoverValue(function (prevHoverValue) {
267
- return [prevHoverValue[0], date];
262
+ setHoverDateRange(function (prevHoverValue) {
263
+ return isNil(prevHoverValue) ? null : [prevHoverValue[0], date];
268
264
  });
269
- } // Before the first click, if hoverRangeValue has a value, hoverValue needs to be updated
265
+ } // Before the first click, if nextHoverDateRange has a value, hoverDateRange needs to be updated
270
266
 
271
- } else if (hoverRange && hoverRangeValue.length) {
272
- setHoverValue(hoverRangeValue);
267
+ } else if (!isNil(nextHoverDateRange)) {
268
+ setHoverDateRange(nextHoverDateRange);
273
269
  }
274
- }, [getHoverRangeValue, hoverRange]);
275
- var handleSelectValueChange = useCallback(function (date, event) {
276
- var nextSelectValue = Array.from(hoverValue);
270
+ }, [getHoverRangeValue]);
271
+ /**
272
+ * Callback for selecting a date cell in the calendar grid
273
+ */
274
+
275
+ var handleSelectDate = useCallback(function (date, event) {
276
+ var nextSelectDates = hoverDateRange !== null && hoverDateRange !== void 0 ? hoverDateRange : [];
277
277
  var hoverRangeValue = getHoverRangeValue(date);
278
- var noHoverRangeValid = hoverRangeValue.length !== 2; // in `oneTap` mode
278
+ var noHoverRangeValid = isNil(hoverRangeValue); // in `oneTap` mode
279
279
 
280
280
  if (hasDoneSelect.current && oneTap) {
281
281
  handleValueUpdate(event, noHoverRangeValid ? [setTimingMargin(date), setTimingMargin(date, 'right')] : hoverRangeValue);
@@ -287,32 +287,32 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
287
287
  if (noHoverRangeValid) {
288
288
  // start select
289
289
  if (hasDoneSelect.current) {
290
- nextSelectValue = [date];
290
+ nextSelectDates = [date];
291
291
  } else {
292
292
  // finish select
293
- nextSelectValue[1] = date;
293
+ nextSelectDates[1] = date;
294
294
  }
295
295
  } else {
296
296
  if (!hasDoneSelect.current) {
297
- nextSelectValue = selectValue;
297
+ nextSelectDates = selectedDates;
298
298
  selectRangeValueRef.current = null;
299
299
  } else {
300
- nextSelectValue = hoverRangeValue;
300
+ nextSelectDates = hoverRangeValue;
301
301
  selectRangeValueRef.current = hoverRangeValue;
302
302
  }
303
303
  } // If user have completed the selection, then sort
304
304
 
305
305
 
306
- if (nextSelectValue.length === 2 && DateUtils.isAfter(nextSelectValue[0], nextSelectValue[1])) {
307
- nextSelectValue.reverse();
306
+ if (nextSelectDates.length === 2 && DateUtils.isAfter(nextSelectDates[0], nextSelectDates[1])) {
307
+ nextSelectDates.reverse();
308
308
  }
309
309
 
310
- setHoverValue(nextSelectValue);
311
- setSelectValue(nextSelectValue);
312
- updateCalendarDate(nextSelectValue);
310
+ setHoverDateRange(nextSelectDates.length === 2 ? nextSelectDates : [nextSelectDates[0], nextSelectDates[0]]);
311
+ setSelectedDates(nextSelectDates);
312
+ updateCalendarDate(nextSelectDates);
313
313
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(date, event);
314
314
  hasDoneSelect.current = !hasDoneSelect.current;
315
- }, [getHoverRangeValue, handleValueUpdate, hoverValue, onSelect, oneTap, selectValue, updateCalendarDate]);
315
+ }, [getHoverRangeValue, handleValueUpdate, hoverDateRange, onSelect, oneTap, selectedDates, updateCalendarDate]);
316
316
  /**
317
317
  * If `selectValue` changed, there will be the following effects.
318
318
  * 1. Check if the selection is completed.
@@ -320,19 +320,17 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
320
320
  */
321
321
 
322
322
  useEffect(function () {
323
- var _selectValue$length;
324
-
325
- var selectValueLength = (_selectValue$length = selectValue === null || selectValue === void 0 ? void 0 : selectValue.length) !== null && _selectValue$length !== void 0 ? _selectValue$length : 0;
323
+ var selectValueLength = selectedDates.length;
326
324
  var doneSelected = selectValueLength === 0 || selectValueLength === 2;
327
- doneSelected && setHoverValue([]);
328
- }, [selectValue]);
325
+ doneSelected && setHoverDateRange(null);
326
+ }, [selectedDates]);
329
327
  var handleChangeCalendarDate = useCallback(function (index, date) {
330
328
  var nextCalendarDate = Array.from(calendarDate);
331
329
  nextCalendarDate[index] = date;
332
330
  updateCalendarDate(nextCalendarDate);
333
331
  }, [calendarDate, updateCalendarDate]);
334
332
  var handleChangeCalendarTime = useCallback(function (index, date) {
335
- setSelectValue(function (prev) {
333
+ setSelectedDates(function (prev) {
336
334
  var next = [].concat(prev);
337
335
  var clonedDate = new Date(date.valueOf()); // if next[index] is not empty, only update the time after aligning the year, month and day
338
336
 
@@ -357,24 +355,28 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
357
355
  next[index] = DateUtils.setHours(clonedDate, nextHours);
358
356
  setCalendarDate(next); // If the value already exists, update the value again.
359
357
 
360
- if (selectValue.length === 2) {
361
- setSelectValue(next);
358
+ if (selectedDates.length === 2) {
359
+ setSelectedDates(next);
362
360
  }
363
- }, [calendarDate, selectValue]);
361
+ }, [calendarDate, selectedDates]);
364
362
  /**
365
363
  * Toolbar operation callback function
366
364
  */
367
365
 
368
366
  var handleShortcutPageDate = useCallback(function (value, closeOverlay, event) {
367
+ if (closeOverlay === void 0) {
368
+ closeOverlay = false;
369
+ }
370
+
369
371
  handleValueUpdate(event, value, closeOverlay);
370
372
  }, [handleValueUpdate]);
371
373
  var handleOK = useCallback(function (event) {
372
- handleValueUpdate(event);
373
- onOk === null || onOk === void 0 ? void 0 : onOk(selectValue, event);
374
- }, [handleValueUpdate, onOk, selectValue]);
374
+ handleValueUpdate(event, selectedDates);
375
+ onOk === null || onOk === void 0 ? void 0 : onOk(selectedDates, event);
376
+ }, [handleValueUpdate, onOk, selectedDates]);
375
377
  var handleClean = useCallback(function (event) {
376
- updateCalendarDate();
377
- handleValueUpdate(event, []);
378
+ updateCalendarDate(null);
379
+ handleValueUpdate(event, null);
378
380
  }, [handleValueUpdate, updateCalendarDate]);
379
381
  /**
380
382
  * Callback after the input box value is changed.
@@ -403,13 +405,13 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
403
405
  return;
404
406
  }
405
407
 
406
- if (disabledDate(startDate, selectValue, true, DATERANGE_DISABLED_TARGET.CALENDAR)) {
408
+ if (isDateDisabled(startDate, selectValue, true, DATERANGE_DISABLED_TARGET.CALENDAR)) {
407
409
  setInputState('Error');
408
410
  return;
409
411
  }
410
412
 
411
- setHoverValue(selectValue);
412
- setSelectValue(selectValue);
413
+ setHoverDateRange(selectValue);
414
+ setSelectedDates(selectValue);
413
415
  updateCalendarDate(selectValue);
414
416
  }, // eslint-disable-next-line react-hooks/exhaustive-deps
415
417
  [character, rangeFormatStr, updateCalendarDate]);
@@ -419,11 +421,11 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
419
421
 
420
422
  var handleInputPressEnd = useCallback(function (event) {
421
423
  if (inputState === 'Typing') {
422
- handleValueUpdate(event, selectValue);
424
+ handleValueUpdate(event, selectedDates.length === 2 ? selectedDates : null);
423
425
  }
424
426
 
425
427
  setInputState('Initial');
426
- }, [handleValueUpdate, selectValue, inputState]);
428
+ }, [handleValueUpdate, selectedDates, inputState]);
427
429
  var handleEnter = useCallback(function () {
428
430
  var nextCalendarDate;
429
431
 
@@ -433,13 +435,13 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
433
435
  nextCalendarDate = [_startDate, isSameMonth(_startDate, endData) ? addMonths(endData, 1) : endData];
434
436
  } else {
435
437
  nextCalendarDate = getCalendarDate({
436
- value: defaultCalendarValue
438
+ value: defaultCalendarValue !== null && defaultCalendarValue !== void 0 ? defaultCalendarValue : null
437
439
  });
438
440
  }
439
441
 
440
- setSelectValue(value);
442
+ setSelectedDates(value !== null && value !== void 0 ? value : []);
441
443
  updateCalendarDate(nextCalendarDate);
442
- }, [defaultCalendarValue, updateCalendarDate, setSelectValue, value]);
444
+ }, [defaultCalendarValue, updateCalendarDate, setSelectedDates, value]);
443
445
  var handleEntered = useCallback(function () {
444
446
  onOpen === null || onOpen === void 0 ? void 0 : onOpen();
445
447
  setPickerToggleActive(true);
@@ -449,17 +451,16 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
449
451
  hasDoneSelect.current = true;
450
452
  onClose === null || onClose === void 0 ? void 0 : onClose();
451
453
  }, [onClose]);
452
- var disabledDate = useCallback(function (date, selectDate, selectedDone, target) {
453
- return disabledDateProp === null || disabledDateProp === void 0 ? void 0 : disabledDateProp(date, selectDate, selectedDone, target);
454
+ var isDateDisabled = useCallback(function (date, selectDate, selectedDone, target) {
455
+ var _disabledDateProp;
456
+
457
+ return (_disabledDateProp = disabledDateProp === null || disabledDateProp === void 0 ? void 0 : disabledDateProp(date, selectDate, selectedDone, target)) !== null && _disabledDateProp !== void 0 ? _disabledDateProp : false;
454
458
  }, [disabledDateProp]);
455
459
  var disabledByBetween = useCallback(function (start, end, type) {
456
- var selectStartDate = selectValue[0],
457
- selectEndDate = selectValue[1];
458
- var nextSelectValue = [selectStartDate, selectEndDate]; // If the date is between the start and the end
460
+ // If the date is between the start and the end
459
461
  // the button is disabled
460
-
461
462
  while (DateUtils.isBefore(start, end) || DateUtils.isSameDay(start, end)) {
462
- if (disabledDate(start, nextSelectValue, hasDoneSelect.current, type)) {
463
+ if (isDateDisabled(start, selectedDates, hasDoneSelect.current, type)) {
463
464
  return true;
464
465
  }
465
466
 
@@ -467,17 +468,17 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
467
468
  }
468
469
 
469
470
  return false;
470
- }, [disabledDate, selectValue]);
471
+ }, [isDateDisabled, selectedDates]);
471
472
  var disabledOkButton = useCallback(function () {
472
- var start = selectValue[0],
473
- end = selectValue[1];
473
+ var start = selectedDates[0],
474
+ end = selectedDates[1];
474
475
 
475
476
  if (!start || !end || !hasDoneSelect.current) {
476
477
  return true;
477
478
  }
478
479
 
479
480
  return disabledByBetween(start, end, DATERANGE_DISABLED_TARGET.TOOLBAR_BUTTON_OK);
480
- }, [disabledByBetween, selectValue]);
481
+ }, [disabledByBetween, selectedDates]);
481
482
  var disabledShortcutButton = useCallback(function (value) {
482
483
  if (value === void 0) {
483
484
  value = [];
@@ -494,8 +495,8 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
494
495
  return disabledByBetween(start, end, DATERANGE_DISABLED_TARGET.TOOLBAR_SHORTCUT);
495
496
  }, [disabledByBetween]);
496
497
  var handleDisabledDate = useCallback(function (date, values, type) {
497
- return disabledDate(date, values, hasDoneSelect.current, type);
498
- }, [disabledDate]);
498
+ return isDateDisabled(date, values, hasDoneSelect.current, type);
499
+ }, [isDateDisabled]);
499
500
  var onPickerKeyDown = useToggleKeyDownEvent(_extends({
500
501
  triggerRef: triggerRef,
501
502
  targetRef: targetRef,
@@ -521,18 +522,18 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
521
522
  calendarDate: calendarDate,
522
523
  disabledDate: handleDisabledDate,
523
524
  format: formatStr,
524
- hoverRangeValue: hoverValue,
525
+ hoverRangeValue: hoverDateRange !== null && hoverDateRange !== void 0 ? hoverDateRange : undefined,
525
526
  isoWeek: isoWeek,
526
527
  limitEndYear: limitEndYear,
527
528
  locale: locale,
528
529
  showOneCalendar: showOneCalendar,
529
530
  showWeekNumbers: showWeekNumbers,
530
- value: selectValue,
531
+ value: selectedDates,
531
532
  showMeridian: showMeridian,
532
533
  onChangeCalendarDate: handleChangeCalendarDate,
533
534
  onChangeCalendarTime: handleChangeCalendarTime,
534
535
  onMouseMove: handleMouseMove,
535
- onSelect: handleSelectValueChange,
536
+ onSelect: handleSelectDate,
536
537
  onToggleMeridian: handleToggleMeridian
537
538
  };
538
539
  return /*#__PURE__*/React.createElement(PickerOverlay, {
@@ -546,7 +547,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
546
547
  className: prefix('daterange-content')
547
548
  }, /*#__PURE__*/React.createElement("div", {
548
549
  className: prefix('daterange-header')
549
- }, getDisplayString(selectValue)), /*#__PURE__*/React.createElement("div", {
550
+ }, getDisplayString(selectedDates)), /*#__PURE__*/React.createElement("div", {
550
551
  className: prefix("daterange-calendar-" + (showOneCalendar ? 'single' : 'group'))
551
552
  }, /*#__PURE__*/React.createElement(Calendar, _extends({
552
553
  index: 0
@@ -554,7 +555,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
554
555
  index: 1
555
556
  }, panelProps)))), /*#__PURE__*/React.createElement(Toolbar, {
556
557
  locale: locale,
557
- calendarDate: selectValue,
558
+ calendarDate: selectedDates,
558
559
  disabledOkBtn: disabledOkButton,
559
560
  disabledShortcut: disabledShortcutButton,
560
561
  hideOkBtn: oneTap,
@@ -564,7 +565,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
564
565
  })));
565
566
  };
566
567
 
567
- var hasValue = value && value.length > 1;
568
+ var hasValue = !isNil(value) && value.length > 1;
568
569
 
569
570
  var _usePickerClassName = usePickerClassName(_extends({}, props, {
570
571
  classPrefix: classPrefix,
@@ -605,9 +606,9 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
605
606
  hasValue: hasValue,
606
607
  active: isPickerToggleActive,
607
608
  placement: placement,
608
- caretComponent: IconCalendar,
609
+ caretAs: IconCalendar,
609
610
  disabled: disabled
610
- }), getDisplayString())));
611
+ }), getDisplayString(value))));
611
612
  });
612
613
  DateRangePicker.after = disabledDateUtils.after;
613
614
  DateRangePicker.afterToday = disabledDateUtils.afterToday;
@@ -1,10 +1,11 @@
1
1
  import React from 'react';
2
2
  import { DATERANGE_DISABLED_TARGET } from '../utils/constants';
3
3
  export declare type ValueType = [Date?, Date?];
4
+ export declare type DateRange = [Date, Date];
4
5
  export interface RangeType {
5
6
  label: React.ReactNode;
6
7
  closeOverlay?: boolean;
7
- value: ValueType | ((value?: ValueType) => ValueType);
8
+ value: DateRange | ((value?: ValueType) => DateRange);
8
9
  }
9
10
  export declare type DisabledDateFunction = (
10
11
  /** Date used to determine if disabling is required. */
@@ -1,9 +1,9 @@
1
- import { RangeType, ValueType } from './types';
1
+ import { DateRange, RangeType } from './types';
2
2
  export declare const setTimingMargin: (date: any, way?: string) => Date;
3
3
  export declare function getCalendarDate({ value }: {
4
- value?: ValueType;
5
- }): ValueType;
4
+ value: [] | [Date] | [Date, Date] | null;
5
+ }): DateRange;
6
6
  export declare const getDefaultRanges: () => RangeType[];
7
- export declare const isSameRange: (source: ValueType, dest: ValueType, format: string) => boolean;
8
- export declare const getMonthHoverRange: (date: Date) => ValueType;
9
- export declare const getWeekHoverRange: (isoWeek: boolean, date: Date) => ValueType;
7
+ export declare const isSameRange: (source: DateRange | null, dest: DateRange | null, format: string) => boolean;
8
+ export declare const getMonthHoverRange: (date: Date) => DateRange;
9
+ export declare const getWeekHoverRange: (isoWeek: boolean, date: Date) => DateRange;
@@ -37,10 +37,14 @@ export var getDefaultRanges = function getDefaultRanges() {
37
37
  }];
38
38
  };
39
39
  export var isSameRange = function isSameRange(source, dest, format) {
40
- var result = DateUtils.isSameDay(source === null || source === void 0 ? void 0 : source[0], dest === null || dest === void 0 ? void 0 : dest[0]) && DateUtils.isSameDay(source === null || source === void 0 ? void 0 : source[1], dest === null || dest === void 0 ? void 0 : dest[1]);
40
+ // If both are null, reguard as same
41
+ if (null === source && null === dest) return true; // If only one is null, regard as different
42
+
43
+ if (null === source || null === dest) return false;
44
+ var result = DateUtils.isSameDay(source[0], dest[0]) && DateUtils.isSameDay(source[1], dest[1]);
41
45
 
42
46
  if (DateUtils.shouldTime(format)) {
43
- result && (result = DateUtils.isSameSecond(source === null || source === void 0 ? void 0 : source[0], dest === null || dest === void 0 ? void 0 : dest[0]) && DateUtils.isSameSecond(source === null || source === void 0 ? void 0 : source[1], dest === null || dest === void 0 ? void 0 : dest[1]));
47
+ result && (result = DateUtils.isSameSecond(source[0], dest[0]) && DateUtils.isSameSecond(source[1], dest[1]));
44
48
  }
45
49
 
46
50
  return result;
@@ -1,7 +1,8 @@
1
1
  import React from 'react';
2
2
  import DisclosureButton from './DisclosureButton';
3
3
  import DisclosureContent from './DisclosureContent';
4
- export interface DisclosureRenderProps {
4
+ export declare type DisclosureTrigger = 'click' | 'mouseover';
5
+ export interface DisclosureRenderProps extends Pick<React.HTMLAttributes<HTMLElement>, 'onMouseOver' | 'onMouseOut'> {
5
6
  open: boolean;
6
7
  }
7
8
  export interface DisclosureProps {
@@ -13,10 +14,12 @@ export interface DisclosureProps {
13
14
  hideOnClickOutside?: boolean;
14
15
  /** Callback when disclosure button is being activated to update the open state */
15
16
  onToggle?: (open: boolean, event: React.SyntheticEvent) => void;
17
+ /** What mouse events should disclosure reacts to */
18
+ trigger?: DisclosureTrigger[];
16
19
  }
17
- declare function Disclosure(props: DisclosureProps): JSX.Element;
18
- declare namespace Disclosure {
19
- var Button: typeof DisclosureButton;
20
- var Content: typeof DisclosureContent;
20
+ export interface DisclosureComponent extends React.FC<DisclosureProps> {
21
+ Button: typeof DisclosureButton;
22
+ Content: typeof DisclosureContent;
21
23
  }
24
+ declare const Disclosure: DisclosureComponent;
22
25
  export default Disclosure;