rsuite 5.2.3 → 5.4.1

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