rsuite 5.2.2 → 5.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (485) 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 +1 -0
  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/Stack/package.json +7 -0
  12. package/Stack/styles/index.less +5 -0
  13. package/Table/styles/index.less +0 -4
  14. package/TreePicker/styles/index.less +10 -14
  15. package/cjs/@types/common.d.ts +13 -12
  16. package/cjs/@types/utils.d.ts +12 -0
  17. package/cjs/Affix/Affix.js +5 -5
  18. package/cjs/Animation/Transition.d.ts +21 -12
  19. package/cjs/Animation/Transition.js +4 -1
  20. package/cjs/AutoComplete/AutoComplete.js +1 -1
  21. package/cjs/AutoComplete/utils.d.ts +1 -1
  22. package/cjs/Avatar/Avatar.js +10 -3
  23. package/cjs/AvatarGroup/AvatarGroup.d.ts +15 -0
  24. package/cjs/AvatarGroup/AvatarGroup.js +71 -0
  25. package/cjs/AvatarGroup/index.d.ts +3 -0
  26. package/cjs/AvatarGroup/index.js +11 -0
  27. package/cjs/Breadcrumb/Breadcrumb.js +1 -1
  28. package/cjs/Button/Button.js +8 -2
  29. package/cjs/ButtonGroup/ButtonGroup.js +8 -2
  30. package/cjs/ButtonGroup/ButtonGroupContext.d.ts +7 -0
  31. package/cjs/ButtonGroup/ButtonGroupContext.js +13 -0
  32. package/cjs/ButtonGroup/index.d.ts +2 -0
  33. package/cjs/ButtonGroup/index.js +3 -0
  34. package/cjs/Calendar/Calendar.d.ts +4 -4
  35. package/cjs/Calendar/Calendar.js +5 -2
  36. package/cjs/Calendar/CalendarContext.js +1 -1
  37. package/cjs/Calendar/TableRow.js +1 -1
  38. package/cjs/Calendar/TimeDropdown.js +6 -5
  39. package/cjs/Calendar/types.d.ts +2 -2
  40. package/cjs/Calendar/useCalendarDate.d.ts +2 -2
  41. package/cjs/Carousel/Carousel.d.ts +2 -2
  42. package/cjs/Carousel/Carousel.js +1 -1
  43. package/cjs/Cascader/Cascader.d.ts +1 -1
  44. package/cjs/Cascader/Cascader.js +10 -10
  45. package/cjs/Cascader/DropdownMenu.d.ts +5 -4
  46. package/cjs/Cascader/utils.d.ts +10 -10
  47. package/cjs/CheckPicker/CheckPicker.d.ts +9 -4
  48. package/cjs/CheckPicker/CheckPicker.js +4 -4
  49. package/cjs/CheckPicker/test/CheckPicker.test.d.ts +1 -0
  50. package/cjs/CheckPicker/test/CheckPicker.test.js +76 -0
  51. package/cjs/CheckTree/index.js +2 -6
  52. package/cjs/CheckTreePicker/CheckTreeNode.d.ts +1 -1
  53. package/cjs/CheckTreePicker/CheckTreeNode.js +7 -9
  54. package/cjs/CheckTreePicker/CheckTreePicker.js +34 -27
  55. package/cjs/CheckTreePicker/utils.d.ts +3 -1
  56. package/cjs/CheckTreePicker/utils.js +12 -10
  57. package/cjs/Checkbox/Checkbox.d.ts +1 -1
  58. package/cjs/CheckboxGroup/CheckboxGroup.js +2 -2
  59. package/cjs/CustomProvider/CustomProvider.d.ts +31 -57
  60. package/cjs/DOMHelper/index.d.ts +12 -12
  61. package/cjs/DatePicker/DatePicker.d.ts +1 -1
  62. package/cjs/DatePicker/DatePicker.js +17 -11
  63. package/cjs/DatePicker/Toolbar.d.ts +12 -9
  64. package/cjs/DatePicker/Toolbar.js +6 -8
  65. package/cjs/DatePicker/types.d.ts +4 -4
  66. package/cjs/DatePicker/utils.d.ts +4 -3
  67. package/cjs/DateRangePicker/Calendar.d.ts +9 -7
  68. package/cjs/DateRangePicker/Calendar.js +27 -6
  69. package/cjs/DateRangePicker/DateRangePicker.d.ts +8 -6
  70. package/cjs/DateRangePicker/DateRangePicker.js +131 -108
  71. package/cjs/DateRangePicker/types.d.ts +2 -1
  72. package/cjs/DateRangePicker/utils.d.ts +6 -6
  73. package/cjs/DateRangePicker/utils.js +7 -2
  74. package/cjs/Disclosure/Disclosure.js +4 -2
  75. package/cjs/Disclosure/DisclosureButton.js +9 -7
  76. package/cjs/Disclosure/DisclosureContent.js +4 -6
  77. package/cjs/Disclosure/DisclosureContext.d.ts +2 -2
  78. package/cjs/Disclosure/useDisclosureContext.d.ts +2 -0
  79. package/cjs/Disclosure/useDisclosureContext.js +20 -0
  80. package/cjs/Dropdown/Dropdown.d.ts +1 -1
  81. package/cjs/Dropdown/DropdownContext.d.ts +2 -2
  82. package/cjs/Dropdown/DropdownItem.js +1 -1
  83. package/cjs/Dropdown/DropdownMenu.d.ts +3 -3
  84. package/cjs/Dropdown/DropdownState.d.ts +1 -1
  85. package/cjs/Dropdown/DropdownToggle.js +10 -2
  86. package/cjs/Dropdown/useRenderDropdownItem.d.ts +1 -1
  87. package/cjs/Form/Form.js +1 -1
  88. package/cjs/Form/FormContext.d.ts +1 -1
  89. package/cjs/FormControl/FormControl.d.ts +1 -1
  90. package/cjs/FormControl/FormControl.js +5 -4
  91. package/cjs/FormGroup/FormGroup.d.ts +1 -1
  92. package/cjs/Input/Input.d.ts +3 -2
  93. package/cjs/InputGroup/InputGroup.d.ts +1 -1
  94. package/cjs/InputNumber/InputNumber.js +6 -2
  95. package/cjs/InputPicker/InputAutosize.js +4 -4
  96. package/cjs/InputPicker/InputPicker.d.ts +2 -2
  97. package/cjs/InputPicker/InputPicker.js +16 -11
  98. package/cjs/List/ListContext.d.ts +1 -1
  99. package/cjs/List/ListContext.js +8 -1
  100. package/cjs/List/helper/AutoScroller.js +4 -2
  101. package/cjs/List/helper/useManager.d.ts +3 -3
  102. package/cjs/List/helper/useManager.js +1 -1
  103. package/cjs/List/helper/useSortHelper.d.ts +3 -3
  104. package/cjs/List/helper/useSortHelper.js +6 -4
  105. package/cjs/List/helper/utils.d.ts +2 -2
  106. package/cjs/MaskedInput/TextMask.d.ts +5 -5
  107. package/cjs/MaskedInput/adjustCaretPosition.d.ts +6 -6
  108. package/cjs/MaskedInput/conformToMask.js +5 -4
  109. package/cjs/MaskedInput/createTextMaskInputElement.d.ts +2 -2
  110. package/cjs/MaskedInput/utilities.d.ts +1 -1
  111. package/cjs/Menu/Menu.js +60 -41
  112. package/cjs/Menu/MenuContext.d.ts +1 -1
  113. package/cjs/Menu/MenuItem.d.ts +1 -1
  114. package/cjs/Menu/MenuItem.js +31 -23
  115. package/cjs/Menu/Menubar.js +8 -8
  116. package/cjs/Menu/useMenu.js +17 -7
  117. package/cjs/Modal/Modal.js +12 -6
  118. package/cjs/Modal/ModalContext.d.ts +2 -2
  119. package/cjs/Modal/utils.d.ts +1 -1
  120. package/cjs/Modal/utils.js +3 -5
  121. package/cjs/MultiCascader/DropdownMenu.d.ts +4 -4
  122. package/cjs/MultiCascader/MultiCascader.js +6 -6
  123. package/cjs/MultiCascader/utils.d.ts +17 -17
  124. package/cjs/Nav/Nav.d.ts +1 -1
  125. package/cjs/Nav/Nav.js +3 -0
  126. package/cjs/Nav/NavContext.d.ts +7 -1
  127. package/cjs/Nav/NavContext.js +1 -0
  128. package/cjs/Nav/NavItem.d.ts +1 -1
  129. package/cjs/Navbar/Navbar.js +1 -1
  130. package/cjs/Navbar/NavbarItem.d.ts +1 -1
  131. package/cjs/Overlay/Modal.d.ts +2 -2
  132. package/cjs/Overlay/Modal.js +67 -45
  133. package/cjs/Overlay/ModalManager.d.ts +17 -8
  134. package/cjs/Overlay/ModalManager.js +11 -20
  135. package/cjs/Overlay/Overlay.d.ts +3 -3
  136. package/cjs/Overlay/Overlay.js +8 -2
  137. package/cjs/Overlay/OverlayContext.d.ts +6 -0
  138. package/cjs/Overlay/OverlayContext.js +14 -0
  139. package/cjs/Overlay/OverlayTrigger.d.ts +11 -11
  140. package/cjs/Overlay/OverlayTrigger.js +21 -7
  141. package/cjs/Overlay/Position.d.ts +4 -4
  142. package/cjs/Overlay/Position.js +14 -8
  143. package/cjs/Overlay/positionUtils.d.ts +1 -1
  144. package/cjs/Overlay/positionUtils.js +8 -8
  145. package/cjs/Pagination/Pagination.d.ts +1 -1
  146. package/cjs/Pagination/PaginationButton.d.ts +3 -3
  147. package/cjs/Pagination/PaginationGroup.js +5 -3
  148. package/cjs/Panel/Panel.d.ts +1 -1
  149. package/cjs/Panel/Panel.js +2 -2
  150. package/cjs/PanelGroup/PanelGroup.d.ts +2 -2
  151. package/cjs/Picker/DropdownMenu.d.ts +8 -5
  152. package/cjs/Picker/DropdownMenu.js +5 -5
  153. package/cjs/Picker/PickerOverlay.js +4 -3
  154. package/cjs/Picker/PickerToggle.js +9 -6
  155. package/cjs/Picker/PickerToggleTrigger.d.ts +2 -6
  156. package/cjs/Picker/SearchBar.d.ts +1 -1
  157. package/cjs/Picker/SelectedElement.js +2 -1
  158. package/cjs/Picker/VirtualizedList.d.ts +29 -2
  159. package/cjs/Picker/propTypes.d.ts +5 -7
  160. package/cjs/Picker/propTypes.js +4 -3
  161. package/cjs/Picker/utils.d.ts +15 -23
  162. package/cjs/Picker/utils.js +71 -46
  163. package/cjs/Placeholder/PlaceholderGrid.js +1 -1
  164. package/cjs/Plaintext/Plaintext.js +2 -1
  165. package/cjs/Radio/Radio.d.ts +1 -1
  166. package/cjs/RadioGroup/RadioGroup.d.ts +2 -2
  167. package/cjs/RadioGroup/RadioGroup.js +3 -3
  168. package/cjs/RangeSlider/RangeSlider.d.ts +2 -2
  169. package/cjs/RangeSlider/RangeSlider.js +6 -4
  170. package/cjs/Rate/Character.js +4 -2
  171. package/cjs/Rate/Rate.js +5 -2
  172. package/cjs/Ripple/Ripple.js +1 -1
  173. package/cjs/SelectPicker/SelectPicker.d.ts +12 -5
  174. package/cjs/SelectPicker/SelectPicker.js +8 -8
  175. package/cjs/SelectPicker/index.d.ts +1 -1
  176. package/cjs/SelectPicker/test/SelectPicker.test.d.ts +1 -0
  177. package/cjs/SelectPicker/test/SelectPicker.test.js +62 -0
  178. package/cjs/Sidenav/Node.d.ts +1 -1
  179. package/cjs/Sidenav/Sidenav.d.ts +4 -4
  180. package/cjs/Sidenav/Sidenav.js +5 -2
  181. package/cjs/Sidenav/SidenavDropdown.js +11 -8
  182. package/cjs/Sidenav/SidenavDropdownItem.js +10 -5
  183. package/cjs/Sidenav/SidenavDropdownMenu.js +9 -5
  184. package/cjs/Sidenav/SidenavItem.d.ts +1 -1
  185. package/cjs/Sidenav/SidenavItem.js +4 -0
  186. package/cjs/Slider/Graduated.d.ts +5 -5
  187. package/cjs/Slider/Handle.d.ts +1 -1
  188. package/cjs/Slider/Handle.js +10 -6
  189. package/cjs/Slider/Mark.d.ts +1 -1
  190. package/cjs/Slider/Slider.d.ts +1 -1
  191. package/cjs/Slider/Slider.js +2 -2
  192. package/cjs/Slider/utils.d.ts +2 -1
  193. package/cjs/Slider/utils.js +4 -5
  194. package/cjs/Stack/Stack.d.ts +26 -0
  195. package/cjs/Stack/Stack.js +86 -0
  196. package/cjs/Stack/index.d.ts +3 -0
  197. package/cjs/Stack/index.js +11 -0
  198. package/cjs/Steps/StepItem.js +1 -1
  199. package/cjs/TagInput/index.js +1 -1
  200. package/cjs/Toggle/Toggle.js +3 -3
  201. package/cjs/Tree/Tree.d.ts +3 -2
  202. package/cjs/Tree/Tree.js +2 -6
  203. package/cjs/Tree/TreeContext.d.ts +0 -1
  204. package/cjs/TreePicker/TreeNode.js +7 -22
  205. package/cjs/TreePicker/TreePicker.js +37 -54
  206. package/cjs/Uploader/UploadFileItem.d.ts +1 -1
  207. package/cjs/Uploader/UploadFileItem.js +2 -2
  208. package/cjs/Uploader/UploadTrigger.d.ts +1 -1
  209. package/cjs/Uploader/UploadTrigger.js +2 -3
  210. package/cjs/Uploader/Uploader.d.ts +5 -5
  211. package/cjs/Uploader/Uploader.js +1 -2
  212. package/cjs/index.d.ts +6 -2
  213. package/cjs/index.js +13 -5
  214. package/cjs/locales/index.d.ts +3 -3
  215. package/cjs/toaster/ToastContainer.d.ts +1 -1
  216. package/cjs/toaster/ToastContainer.js +1 -1
  217. package/cjs/toaster/toaster.js +3 -1
  218. package/cjs/utils/BrowserDetection.js +1 -1
  219. package/cjs/utils/ReactChildren.d.ts +2 -2
  220. package/cjs/utils/ajaxUpload.d.ts +1 -1
  221. package/cjs/utils/ajaxUpload.js +5 -4
  222. package/cjs/utils/appendTooltip.d.ts +1 -1
  223. package/cjs/utils/constants.d.ts +4 -4
  224. package/cjs/utils/createChainedFunction.d.ts +1 -1
  225. package/cjs/utils/getDataGroupBy.d.ts +1 -1
  226. package/cjs/utils/mergeRefs.d.ts +2 -2
  227. package/cjs/utils/previewFile.d.ts +1 -1
  228. package/cjs/utils/propTypeChecker.d.ts +6 -2
  229. package/cjs/utils/propTypeChecker.js +7 -6
  230. package/cjs/utils/reactToString.d.ts +2 -1
  231. package/cjs/utils/statusIcons.d.ts +1 -1
  232. package/cjs/utils/stringToObject.d.ts +1 -1
  233. package/cjs/utils/treeUtils.d.ts +35 -32
  234. package/cjs/utils/treeUtils.js +46 -23
  235. package/cjs/utils/useControlled.d.ts +6 -1
  236. package/cjs/utils/useControlled.js +0 -8
  237. package/cjs/utils/useCustom.js +6 -4
  238. package/cjs/utils/useElementResize.js +6 -3
  239. package/cjs/utils/useFocus.d.ts +2 -2
  240. package/cjs/utils/usePortal.d.ts +2 -2
  241. package/cjs/utils/useRootClose.d.ts +2 -2
  242. package/cjs/utils/useTimeout.d.ts +1 -1
  243. package/cjs/utils/useTimeout.js +5 -3
  244. package/dist/rsuite-rtl.css +60 -178
  245. package/dist/rsuite-rtl.min.css +1 -1
  246. package/dist/rsuite-rtl.min.css.map +1 -1
  247. package/dist/rsuite.css +60 -178
  248. package/dist/rsuite.js +216 -117
  249. package/dist/rsuite.js.map +1 -1
  250. package/dist/rsuite.min.css +1 -1
  251. package/dist/rsuite.min.css.map +1 -1
  252. package/dist/rsuite.min.js +1 -1
  253. package/dist/rsuite.min.js.LICENSE.txt +9 -0
  254. package/dist/rsuite.min.js.map +1 -1
  255. package/esm/@types/common.d.ts +13 -12
  256. package/esm/@types/utils.d.ts +12 -0
  257. package/esm/Affix/Affix.js +5 -5
  258. package/esm/Animation/Transition.d.ts +21 -12
  259. package/esm/Animation/Transition.js +4 -1
  260. package/esm/AutoComplete/AutoComplete.js +1 -1
  261. package/esm/AutoComplete/utils.d.ts +1 -1
  262. package/esm/Avatar/Avatar.js +7 -3
  263. package/esm/AvatarGroup/AvatarGroup.d.ts +15 -0
  264. package/esm/AvatarGroup/AvatarGroup.js +54 -0
  265. package/esm/AvatarGroup/index.d.ts +3 -0
  266. package/esm/AvatarGroup/index.js +2 -0
  267. package/esm/Breadcrumb/Breadcrumb.js +1 -1
  268. package/esm/Button/Button.js +6 -2
  269. package/esm/ButtonGroup/ButtonGroup.js +7 -2
  270. package/esm/ButtonGroup/ButtonGroupContext.d.ts +7 -0
  271. package/esm/ButtonGroup/ButtonGroupContext.js +3 -0
  272. package/esm/ButtonGroup/index.d.ts +2 -0
  273. package/esm/ButtonGroup/index.js +2 -0
  274. package/esm/Calendar/Calendar.d.ts +4 -4
  275. package/esm/Calendar/Calendar.js +5 -2
  276. package/esm/Calendar/CalendarContext.js +1 -1
  277. package/esm/Calendar/TableRow.js +1 -1
  278. package/esm/Calendar/TimeDropdown.js +5 -4
  279. package/esm/Calendar/types.d.ts +2 -2
  280. package/esm/Calendar/useCalendarDate.d.ts +2 -2
  281. package/esm/Carousel/Carousel.d.ts +2 -2
  282. package/esm/Carousel/Carousel.js +1 -1
  283. package/esm/Cascader/Cascader.d.ts +1 -1
  284. package/esm/Cascader/Cascader.js +10 -10
  285. package/esm/Cascader/DropdownMenu.d.ts +5 -4
  286. package/esm/Cascader/utils.d.ts +10 -10
  287. package/esm/CheckPicker/CheckPicker.d.ts +9 -4
  288. package/esm/CheckPicker/CheckPicker.js +4 -4
  289. package/esm/CheckPicker/test/CheckPicker.test.d.ts +1 -0
  290. package/esm/CheckPicker/test/CheckPicker.test.js +64 -0
  291. package/esm/CheckTree/index.js +2 -4
  292. package/esm/CheckTreePicker/CheckTreeNode.d.ts +1 -1
  293. package/esm/CheckTreePicker/CheckTreeNode.js +4 -7
  294. package/esm/CheckTreePicker/CheckTreePicker.js +33 -25
  295. package/esm/CheckTreePicker/utils.d.ts +3 -1
  296. package/esm/CheckTreePicker/utils.js +12 -10
  297. package/esm/Checkbox/Checkbox.d.ts +1 -1
  298. package/esm/CheckboxGroup/CheckboxGroup.js +2 -2
  299. package/esm/CustomProvider/CustomProvider.d.ts +31 -57
  300. package/esm/DOMHelper/index.d.ts +12 -12
  301. package/esm/DatePicker/DatePicker.d.ts +1 -1
  302. package/esm/DatePicker/DatePicker.js +16 -11
  303. package/esm/DatePicker/Toolbar.d.ts +12 -9
  304. package/esm/DatePicker/Toolbar.js +6 -8
  305. package/esm/DatePicker/types.d.ts +4 -4
  306. package/esm/DatePicker/utils.d.ts +4 -3
  307. package/esm/DateRangePicker/Calendar.d.ts +9 -7
  308. package/esm/DateRangePicker/Calendar.js +28 -6
  309. package/esm/DateRangePicker/DateRangePicker.d.ts +8 -6
  310. package/esm/DateRangePicker/DateRangePicker.js +129 -108
  311. package/esm/DateRangePicker/types.d.ts +2 -1
  312. package/esm/DateRangePicker/utils.d.ts +6 -6
  313. package/esm/DateRangePicker/utils.js +6 -2
  314. package/esm/Disclosure/Disclosure.js +4 -2
  315. package/esm/Disclosure/DisclosureButton.js +8 -7
  316. package/esm/Disclosure/DisclosureContent.js +5 -7
  317. package/esm/Disclosure/DisclosureContext.d.ts +2 -2
  318. package/esm/Disclosure/useDisclosureContext.d.ts +2 -0
  319. package/esm/Disclosure/useDisclosureContext.js +11 -0
  320. package/esm/Dropdown/Dropdown.d.ts +1 -1
  321. package/esm/Dropdown/DropdownContext.d.ts +2 -2
  322. package/esm/Dropdown/DropdownItem.js +1 -1
  323. package/esm/Dropdown/DropdownMenu.d.ts +3 -3
  324. package/esm/Dropdown/DropdownState.d.ts +1 -1
  325. package/esm/Dropdown/DropdownToggle.js +9 -2
  326. package/esm/Dropdown/useRenderDropdownItem.d.ts +1 -1
  327. package/esm/Form/Form.js +1 -1
  328. package/esm/Form/FormContext.d.ts +1 -1
  329. package/esm/FormControl/FormControl.d.ts +1 -1
  330. package/esm/FormControl/FormControl.js +5 -4
  331. package/esm/FormGroup/FormGroup.d.ts +1 -1
  332. package/esm/Input/Input.d.ts +3 -2
  333. package/esm/InputGroup/InputGroup.d.ts +1 -1
  334. package/esm/InputNumber/InputNumber.js +6 -2
  335. package/esm/InputPicker/InputAutosize.js +4 -4
  336. package/esm/InputPicker/InputPicker.d.ts +2 -2
  337. package/esm/InputPicker/InputPicker.js +16 -11
  338. package/esm/List/ListContext.d.ts +1 -1
  339. package/esm/List/ListContext.js +7 -1
  340. package/esm/List/helper/AutoScroller.js +4 -2
  341. package/esm/List/helper/useManager.d.ts +3 -3
  342. package/esm/List/helper/useManager.js +1 -1
  343. package/esm/List/helper/useSortHelper.d.ts +3 -3
  344. package/esm/List/helper/useSortHelper.js +6 -4
  345. package/esm/List/helper/utils.d.ts +2 -2
  346. package/esm/MaskedInput/TextMask.d.ts +5 -5
  347. package/esm/MaskedInput/adjustCaretPosition.d.ts +6 -6
  348. package/esm/MaskedInput/conformToMask.js +5 -4
  349. package/esm/MaskedInput/createTextMaskInputElement.d.ts +2 -2
  350. package/esm/MaskedInput/utilities.d.ts +1 -1
  351. package/esm/Menu/Menu.js +59 -43
  352. package/esm/Menu/MenuContext.d.ts +1 -1
  353. package/esm/Menu/MenuItem.d.ts +1 -1
  354. package/esm/Menu/MenuItem.js +30 -23
  355. package/esm/Menu/Menubar.js +7 -8
  356. package/esm/Menu/useMenu.js +17 -7
  357. package/esm/Modal/Modal.js +12 -6
  358. package/esm/Modal/ModalContext.d.ts +2 -2
  359. package/esm/Modal/utils.d.ts +1 -1
  360. package/esm/Modal/utils.js +3 -5
  361. package/esm/MultiCascader/DropdownMenu.d.ts +4 -4
  362. package/esm/MultiCascader/MultiCascader.js +6 -6
  363. package/esm/MultiCascader/utils.d.ts +17 -17
  364. package/esm/Nav/Nav.d.ts +1 -1
  365. package/esm/Nav/Nav.js +3 -0
  366. package/esm/Nav/NavContext.d.ts +7 -1
  367. package/esm/Nav/NavContext.js +1 -0
  368. package/esm/Nav/NavItem.d.ts +1 -1
  369. package/esm/Navbar/Navbar.js +1 -1
  370. package/esm/Navbar/NavbarItem.d.ts +1 -1
  371. package/esm/Overlay/Modal.d.ts +2 -2
  372. package/esm/Overlay/Modal.js +67 -45
  373. package/esm/Overlay/ModalManager.d.ts +17 -8
  374. package/esm/Overlay/ModalManager.js +11 -20
  375. package/esm/Overlay/Overlay.d.ts +3 -3
  376. package/esm/Overlay/Overlay.js +8 -3
  377. package/esm/Overlay/OverlayContext.d.ts +6 -0
  378. package/esm/Overlay/OverlayContext.js +4 -0
  379. package/esm/Overlay/OverlayTrigger.d.ts +11 -11
  380. package/esm/Overlay/OverlayTrigger.js +21 -8
  381. package/esm/Overlay/Position.d.ts +4 -4
  382. package/esm/Overlay/Position.js +14 -8
  383. package/esm/Overlay/positionUtils.d.ts +1 -1
  384. package/esm/Overlay/positionUtils.js +6 -6
  385. package/esm/Pagination/Pagination.d.ts +1 -1
  386. package/esm/Pagination/PaginationButton.d.ts +3 -3
  387. package/esm/Pagination/PaginationGroup.js +5 -3
  388. package/esm/Panel/Panel.d.ts +1 -1
  389. package/esm/Panel/Panel.js +2 -2
  390. package/esm/PanelGroup/PanelGroup.d.ts +2 -2
  391. package/esm/Picker/DropdownMenu.d.ts +8 -5
  392. package/esm/Picker/DropdownMenu.js +5 -5
  393. package/esm/Picker/PickerOverlay.js +4 -3
  394. package/esm/Picker/PickerToggle.js +9 -6
  395. package/esm/Picker/PickerToggleTrigger.d.ts +2 -6
  396. package/esm/Picker/SearchBar.d.ts +1 -1
  397. package/esm/Picker/SelectedElement.js +2 -1
  398. package/esm/Picker/VirtualizedList.d.ts +29 -2
  399. package/esm/Picker/propTypes.d.ts +5 -7
  400. package/esm/Picker/propTypes.js +4 -3
  401. package/esm/Picker/utils.d.ts +15 -23
  402. package/esm/Picker/utils.js +70 -46
  403. package/esm/Placeholder/PlaceholderGrid.js +1 -1
  404. package/esm/Plaintext/Plaintext.js +2 -1
  405. package/esm/Radio/Radio.d.ts +1 -1
  406. package/esm/RadioGroup/RadioGroup.d.ts +2 -2
  407. package/esm/RadioGroup/RadioGroup.js +3 -3
  408. package/esm/RangeSlider/RangeSlider.d.ts +2 -2
  409. package/esm/RangeSlider/RangeSlider.js +5 -4
  410. package/esm/Rate/Character.js +3 -2
  411. package/esm/Rate/Rate.js +4 -2
  412. package/esm/Ripple/Ripple.js +1 -1
  413. package/esm/SelectPicker/SelectPicker.d.ts +12 -5
  414. package/esm/SelectPicker/SelectPicker.js +8 -8
  415. package/esm/SelectPicker/index.d.ts +1 -1
  416. package/esm/SelectPicker/test/SelectPicker.test.d.ts +1 -0
  417. package/esm/SelectPicker/test/SelectPicker.test.js +52 -0
  418. package/esm/Sidenav/Node.d.ts +1 -1
  419. package/esm/Sidenav/Sidenav.d.ts +4 -4
  420. package/esm/Sidenav/Sidenav.js +5 -2
  421. package/esm/Sidenav/SidenavDropdown.js +11 -7
  422. package/esm/Sidenav/SidenavDropdownItem.js +11 -5
  423. package/esm/Sidenav/SidenavDropdownMenu.js +9 -5
  424. package/esm/Sidenav/SidenavItem.d.ts +1 -1
  425. package/esm/Sidenav/SidenavItem.js +4 -0
  426. package/esm/Slider/Graduated.d.ts +5 -5
  427. package/esm/Slider/Handle.d.ts +1 -1
  428. package/esm/Slider/Handle.js +10 -6
  429. package/esm/Slider/Mark.d.ts +1 -1
  430. package/esm/Slider/Slider.d.ts +1 -1
  431. package/esm/Slider/Slider.js +2 -2
  432. package/esm/Slider/utils.d.ts +2 -1
  433. package/esm/Slider/utils.js +5 -2
  434. package/esm/Stack/Stack.d.ts +26 -0
  435. package/esm/Stack/Stack.js +71 -0
  436. package/esm/Stack/index.d.ts +3 -0
  437. package/esm/Stack/index.js +2 -0
  438. package/esm/Steps/StepItem.js +1 -1
  439. package/esm/TagInput/index.js +1 -1
  440. package/esm/Toggle/Toggle.js +3 -3
  441. package/esm/Tree/Tree.d.ts +3 -2
  442. package/esm/Tree/Tree.js +2 -4
  443. package/esm/Tree/TreeContext.d.ts +0 -1
  444. package/esm/TreePicker/TreeNode.js +6 -21
  445. package/esm/TreePicker/TreePicker.js +36 -52
  446. package/esm/Uploader/UploadFileItem.d.ts +1 -1
  447. package/esm/Uploader/UploadFileItem.js +2 -2
  448. package/esm/Uploader/UploadTrigger.d.ts +1 -1
  449. package/esm/Uploader/UploadTrigger.js +2 -3
  450. package/esm/Uploader/Uploader.d.ts +5 -5
  451. package/esm/Uploader/Uploader.js +1 -2
  452. package/esm/index.d.ts +6 -2
  453. package/esm/index.js +3 -1
  454. package/esm/locales/index.d.ts +3 -3
  455. package/esm/toaster/ToastContainer.d.ts +1 -1
  456. package/esm/toaster/ToastContainer.js +1 -1
  457. package/esm/toaster/toaster.js +3 -1
  458. package/esm/utils/BrowserDetection.js +1 -1
  459. package/esm/utils/ReactChildren.d.ts +2 -2
  460. package/esm/utils/ajaxUpload.d.ts +1 -1
  461. package/esm/utils/ajaxUpload.js +5 -4
  462. package/esm/utils/appendTooltip.d.ts +1 -1
  463. package/esm/utils/constants.d.ts +4 -4
  464. package/esm/utils/createChainedFunction.d.ts +1 -1
  465. package/esm/utils/getDataGroupBy.d.ts +1 -1
  466. package/esm/utils/mergeRefs.d.ts +2 -2
  467. package/esm/utils/previewFile.d.ts +1 -1
  468. package/esm/utils/propTypeChecker.d.ts +6 -2
  469. package/esm/utils/propTypeChecker.js +7 -6
  470. package/esm/utils/reactToString.d.ts +2 -1
  471. package/esm/utils/statusIcons.d.ts +1 -1
  472. package/esm/utils/stringToObject.d.ts +1 -1
  473. package/esm/utils/treeUtils.d.ts +35 -32
  474. package/esm/utils/treeUtils.js +45 -21
  475. package/esm/utils/useControlled.d.ts +6 -1
  476. package/esm/utils/useControlled.js +0 -8
  477. package/esm/utils/useCustom.js +6 -4
  478. package/esm/utils/useElementResize.js +6 -3
  479. package/esm/utils/useFocus.d.ts +2 -2
  480. package/esm/utils/usePortal.d.ts +2 -2
  481. package/esm/utils/useRootClose.d.ts +2 -2
  482. package/esm/utils/useTimeout.d.ts +1 -1
  483. package/esm/utils/useTimeout.js +5 -3
  484. package/package.json +3 -3
  485. package/styles/index.less +2 -0
package/esm/Nav/Nav.js CHANGED
@@ -59,6 +59,7 @@ var Nav = /*#__PURE__*/React.forwardRef(function (props, ref) {
59
59
  if (sidenav !== null && sidenav !== void 0 && sidenav.expanded) {
60
60
  return /*#__PURE__*/React.createElement(NavContext.Provider, {
61
61
  value: {
62
+ withinNav: true,
62
63
  activeKey: activeKey,
63
64
  onSelect: onSelectProp !== null && onSelectProp !== void 0 ? onSelectProp : onSelectFromSidenav
64
65
  }
@@ -73,6 +74,7 @@ var Nav = /*#__PURE__*/React.forwardRef(function (props, ref) {
73
74
  if (sidenav) {
74
75
  return /*#__PURE__*/React.createElement(NavContext.Provider, {
75
76
  value: {
77
+ withinNav: true,
76
78
  activeKey: activeKey,
77
79
  onSelect: onSelectProp !== null && onSelectProp !== void 0 ? onSelectProp : onSelectFromSidenav
78
80
  }
@@ -89,6 +91,7 @@ var Nav = /*#__PURE__*/React.forwardRef(function (props, ref) {
89
91
 
90
92
  return /*#__PURE__*/React.createElement(NavContext.Provider, {
91
93
  value: {
94
+ withinNav: true,
92
95
  activeKey: activeKey,
93
96
  onSelect: onSelectProp !== null && onSelectProp !== void 0 ? onSelectProp : onSelectFromSidenav
94
97
  }
@@ -1,7 +1,13 @@
1
1
  import React from 'react';
2
2
  export interface NavContextProps {
3
+ /**
4
+ * Whether component is rendered within a <Nav>
5
+ *
6
+ * FIXME: Bad design. Should use NavContextProps | null to determin whether within a <Nav>
7
+ */
8
+ withinNav: boolean;
3
9
  activeKey: string | null;
4
- onSelect: (eventKey: string, event: React.SyntheticEvent) => void;
10
+ onSelect?: (eventKey: string | undefined, event: React.SyntheticEvent) => void;
5
11
  }
6
12
  declare const NavContext: React.Context<NavContextProps>;
7
13
  export default NavContext;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import noop from 'lodash/noop';
3
3
  var NavContext = /*#__PURE__*/React.createContext({
4
+ withinNav: false,
4
5
  activeKey: null,
5
6
  onSelect: noop
6
7
  });
@@ -17,7 +17,7 @@ export interface NavItemProps<T = string> extends WithAsProps, Omit<React.HTMLAt
17
17
  /** Providing a `href` will render an `<a>` element */
18
18
  href?: string;
19
19
  /** Select the callback function that the event triggers. */
20
- onSelect?: (eventKey: T, event: React.SyntheticEvent) => void;
20
+ onSelect?: (eventKey: T | undefined, event: React.SyntheticEvent) => void;
21
21
  }
22
22
  /**
23
23
  * The <Nav.Item> API
@@ -5,7 +5,7 @@ import NavbarBody from './NavbarBody';
5
5
  import NavbarHeader from './NavbarHeader';
6
6
  import NavbarBrand from './NavbarBrand';
7
7
  import { useClassNames } from '../utils';
8
- export var NavbarContext = /*#__PURE__*/React.createContext(null);
8
+ export var NavbarContext = /*#__PURE__*/React.createContext(false);
9
9
  var Navbar = /*#__PURE__*/React.forwardRef(function (props, ref) {
10
10
  var className = props.className,
11
11
  _props$as = props.as,
@@ -13,7 +13,7 @@ export interface NavItemProps<T = string> extends WithAsProps, Omit<React.HTMLAt
13
13
  /** Providing a `href` will render an `<a>` element */
14
14
  href?: string;
15
15
  /** Select the callback function that the event triggers. */
16
- onSelect?: (eventKey: T, event: React.SyntheticEvent) => void;
16
+ onSelect?: (eventKey: T | undefined, event: React.SyntheticEvent) => void;
17
17
  }
18
18
  declare const NavbarItem: RsRefForwardingComponent<'a', NavItemProps>;
19
19
  export default NavbarItem;
@@ -44,8 +44,8 @@ interface ModalProps extends BaseModalProps {
44
44
  containerClassName?: string;
45
45
  backdropTransitionTimeout?: number;
46
46
  dialogTransitionTimeout?: number;
47
- transition: React.ElementType;
48
- onEscapeKeyUp?: React.KeyboardEventHandler;
47
+ transition?: React.ElementType;
48
+ onEsc?: React.KeyboardEventHandler;
49
49
  onBackdropClick?: React.MouseEventHandler;
50
50
  }
51
51
  declare const Modal: RsRefForwardingComponent<'div', ModalProps>;
@@ -3,14 +3,14 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
3
3
  import React, { useRef, useEffect, useState, useCallback } from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import classNames from 'classnames';
6
- import canUseDOM from 'dom-lib/canUseDOM';
7
6
  import contains from 'dom-lib/contains';
8
7
  import getContainer from 'dom-lib/getContainer';
9
8
  import on from 'dom-lib/on';
10
9
  import ModalManager from './ModalManager';
11
10
  import Fade from '../Animation/Fade';
12
11
  import { animationPropTypes } from '../Animation/utils';
13
- import { mergeRefs, getDOMNode, usePortal, createChainedFunction, useWillUnmount } from '../utils';
12
+ import { mergeRefs, usePortal, createChainedFunction, useWillUnmount, useEventCallback, KEY_VALUES } from '../utils';
13
+ import OverlayContext from './OverlayContext';
14
14
  var manager;
15
15
 
16
16
  function getManager() {
@@ -25,6 +25,12 @@ var useModalManager = function useModalManager() {
25
25
  backdrop: null
26
26
  });
27
27
  return {
28
+ get dialog() {
29
+ var _modal$current;
30
+
31
+ return (_modal$current = modal.current) === null || _modal$current === void 0 ? void 0 : _modal$current.dialog;
32
+ },
33
+
28
34
  add: function add(containerElement, containerClassName) {
29
35
  return modalManager.add(modal.current, containerElement, containerClassName);
30
36
  },
@@ -67,7 +73,7 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
67
73
  _props$autoFocus = props.autoFocus,
68
74
  autoFocus = _props$autoFocus === void 0 ? true : _props$autoFocus,
69
75
  onBackdropClick = props.onBackdropClick,
70
- onEscapeKeyUp = props.onEscapeKeyUp,
76
+ onEsc = props.onEsc,
71
77
  onExit = props.onExit,
72
78
  onExiting = props.onExiting,
73
79
  onExited = props.onExited,
@@ -76,7 +82,7 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
76
82
  onEntered = props.onEntered,
77
83
  onClose = props.onClose,
78
84
  onOpen = props.onOpen,
79
- rest = _objectWithoutPropertiesLoose(props, ["as", "children", "transition", "dialogTransitionTimeout", "style", "className", "container", "animationProps", "containerClassName", "keyboard", "enforceFocus", "backdrop", "backdropTransitionTimeout", "backdropStyle", "backdropClassName", "open", "autoFocus", "onBackdropClick", "onEscapeKeyUp", "onExit", "onExiting", "onExited", "onEnter", "onEntering", "onEntered", "onClose", "onOpen"]);
85
+ rest = _objectWithoutPropertiesLoose(props, ["as", "children", "transition", "dialogTransitionTimeout", "style", "className", "container", "animationProps", "containerClassName", "keyboard", "enforceFocus", "backdrop", "backdropTransitionTimeout", "backdropStyle", "backdropClassName", "open", "autoFocus", "onBackdropClick", "onEsc", "onExit", "onExiting", "onExited", "onEnter", "onEntering", "onEntered", "onClose", "onOpen"]);
80
86
 
81
87
  var _useState = useState(!open),
82
88
  exited = _useState[0],
@@ -96,19 +102,13 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
96
102
  }
97
103
 
98
104
  var mountModal = open || Transition && !exited;
99
- var rootRef = useRef();
100
- var lastFocus = useRef();
101
- var handleDocumentKeyUp = useCallback(function (event) {
102
- if (keyboard && event.keyCode === 27 && modal.isTopModal()) {
103
- onEscapeKeyUp === null || onEscapeKeyUp === void 0 ? void 0 : onEscapeKeyUp(event);
105
+ var lastFocus = useRef(null);
106
+ var handleDocumentKeyDown = useEventCallback(function (event) {
107
+ if (keyboard && event.key === KEY_VALUES.ESC && modal.isTopModal()) {
108
+ onEsc === null || onEsc === void 0 ? void 0 : onEsc(event);
104
109
  onClose === null || onClose === void 0 ? void 0 : onClose(event);
105
110
  }
106
- }, [keyboard, modal, onEscapeKeyUp, onClose]);
107
- var checkForFocus = useCallback(function () {
108
- if (canUseDOM) {
109
- lastFocus.current = document.activeElement;
110
- }
111
- }, []);
111
+ });
112
112
  var restoreLastFocus = useCallback(function () {
113
113
  if (lastFocus.current) {
114
114
  var _lastFocus$current$fo, _lastFocus$current;
@@ -117,22 +117,29 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
117
117
  lastFocus.current = null;
118
118
  }
119
119
  }, []);
120
- var getDialogElement = useCallback(function () {
121
- return getDOMNode(rootRef.current);
122
- }, []);
123
- var handleEnforceFocus = useCallback(function () {
124
- if (!enforceFocus || !modal.isTopModal()) {
125
- return;
126
- }
120
+ /**
121
+ * Determines if the currently focused element is inside the dialog,
122
+ * and if not, returns the focus to the dialog.
123
+ *
124
+ */
127
125
 
126
+ var handleFocusDialog = useEventCallback(function (onBeforeFocusCallback) {
128
127
  var currentActiveElement = document.activeElement;
129
- var dialog = getDialogElement();
128
+ var dialog = modal.dialog;
130
129
 
131
- if (dialog && dialog !== currentActiveElement && !contains(dialog, currentActiveElement)) {
130
+ if (dialog && currentActiveElement && !contains(dialog, currentActiveElement)) {
131
+ onBeforeFocusCallback === null || onBeforeFocusCallback === void 0 ? void 0 : onBeforeFocusCallback();
132
132
  dialog.focus();
133
133
  }
134
- }, [enforceFocus, getDialogElement, modal]);
135
- var handleBackdropClick = useCallback(function (event) {
134
+ });
135
+ var handleEnforceFocus = useEventCallback(function () {
136
+ if (!enforceFocus || !modal.isTopModal()) {
137
+ return;
138
+ }
139
+
140
+ handleFocusDialog();
141
+ });
142
+ var handleBackdropClick = useEventCallback(function (event) {
136
143
  if (event.target !== event.currentTarget) {
137
144
  return;
138
145
  }
@@ -142,30 +149,39 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
142
149
  if (backdrop === true) {
143
150
  onClose === null || onClose === void 0 ? void 0 : onClose(event);
144
151
  }
145
- }, [backdrop, onBackdropClick, onClose]);
146
- var documentKeyupListener = useRef();
147
- var docusinListener = useRef();
148
- var handleOpen = useCallback(function () {
149
- var dialog = getDialogElement();
152
+ });
153
+ var documentKeyDownListener = useRef();
154
+ var documentFocusListener = useRef();
155
+ var handleOpen = useEventCallback(function () {
150
156
  var containerElement = getContainer(container, document.body);
151
157
  modal.add(containerElement, containerClassName);
152
- documentKeyupListener.current = on(document, 'keydown', handleDocumentKeyUp);
153
- docusinListener.current = on(document, 'focus', handleEnforceFocus, true);
154
- onOpen === null || onOpen === void 0 ? void 0 : onOpen();
155
- checkForFocus();
158
+
159
+ if (!documentKeyDownListener.current) {
160
+ documentKeyDownListener.current = on(document, 'keydown', handleDocumentKeyDown);
161
+ }
162
+
163
+ if (!documentFocusListener.current) {
164
+ documentFocusListener.current = on(document, 'focus', handleEnforceFocus, true);
165
+ }
156
166
 
157
167
  if (autoFocus) {
158
- dialog === null || dialog === void 0 ? void 0 : dialog.focus();
168
+ handleFocusDialog(function () {
169
+ lastFocus.current = document.activeElement;
170
+ });
159
171
  }
160
- }, [autoFocus, checkForFocus, container, containerClassName, getDialogElement, handleDocumentKeyUp, handleEnforceFocus, modal, onOpen]);
161
- var handleClose = useCallback(function () {
162
- var _documentKeyupListene, _docusinListener$curr;
172
+
173
+ onOpen === null || onOpen === void 0 ? void 0 : onOpen();
174
+ });
175
+ var handleClose = useEventCallback(function () {
176
+ var _documentKeyDownListe, _documentFocusListene;
163
177
 
164
178
  modal.remove();
165
- (_documentKeyupListene = documentKeyupListener.current) === null || _documentKeyupListene === void 0 ? void 0 : _documentKeyupListene.off();
166
- (_docusinListener$curr = docusinListener.current) === null || _docusinListener$curr === void 0 ? void 0 : _docusinListener$curr.off();
179
+ (_documentKeyDownListe = documentKeyDownListener.current) === null || _documentKeyDownListe === void 0 ? void 0 : _documentKeyDownListe.off();
180
+ documentKeyDownListener.current = null;
181
+ (_documentFocusListene = documentFocusListener.current) === null || _documentFocusListene === void 0 ? void 0 : _documentFocusListene.off();
182
+ documentFocusListener.current = null;
167
183
  restoreLastFocus();
168
- }, [modal, restoreLastFocus]);
184
+ });
169
185
  useEffect(function () {
170
186
  if (!open) {
171
187
  return;
@@ -234,12 +250,18 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
234
250
  onEntering: onEntering,
235
251
  onEntered: onEntered
236
252
  }), children) : children;
237
- return /*#__PURE__*/React.createElement(Portal, null, /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
253
+ return /*#__PURE__*/React.createElement(OverlayContext.Provider, {
254
+ value: {
255
+ overlayContainer: function overlayContainer() {
256
+ return modal.dialog;
257
+ }
258
+ }
259
+ }, /*#__PURE__*/React.createElement(Portal, null, /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
238
260
  ref: mergeRefs(modal.setDialogRef, ref),
239
261
  style: style,
240
262
  className: className,
241
263
  tabIndex: -1
242
- }), backdrop && renderBackdrop(), dialogElement));
264
+ }), backdrop && renderBackdrop(), dialogElement)));
243
265
  });
244
266
  export var modalPropTypes = {
245
267
  as: PropTypes.elementType,
@@ -264,7 +286,7 @@ Modal.propTypes = _extends({}, animationPropTypes, modalPropTypes, {
264
286
  dialogTransitionTimeout: PropTypes.number,
265
287
  backdropTransitionTimeout: PropTypes.number,
266
288
  transition: PropTypes.any,
267
- onEscapeKeyUp: PropTypes.func,
289
+ onEsc: PropTypes.func,
268
290
  onBackdropClick: PropTypes.func
269
291
  });
270
292
  export default Modal;
@@ -1,11 +1,20 @@
1
+ import React from 'react';
2
+ export interface ModalInstance {
3
+ dialog: HTMLElement | null;
4
+ backdrop: HTMLElement | null;
5
+ }
6
+ export interface ContainerState {
7
+ classes: string[];
8
+ modals: ModalInstance[];
9
+ style: React.CSSProperties;
10
+ overflowing: boolean;
11
+ }
1
12
  declare class ModalManager {
2
- constructor(hideSiblingNodes?: boolean);
3
- hideSiblingNodes: any;
4
- modals: any[];
5
- containers: any[];
6
- data: any[];
7
- add(modal: any, container: any, className?: string): number;
8
- remove(modal: any): void;
9
- isTopModal(modal: any): boolean;
13
+ modals: ModalInstance[];
14
+ containers: HTMLElement[];
15
+ data: ContainerState[];
16
+ add(modal: ModalInstance, container: HTMLElement, className?: string): number;
17
+ remove(modal: ModalInstance): void;
18
+ isTopModal(modal: ModalInstance): boolean;
10
19
  }
11
20
  export default ModalManager;
@@ -25,16 +25,7 @@ function findContainer(data, modal) {
25
25
  }
26
26
 
27
27
  var ModalManager = /*#__PURE__*/function () {
28
- function ModalManager(hideSiblingNodes) {
29
- if (hideSiblingNodes === void 0) {
30
- hideSiblingNodes = true;
31
- }
32
-
33
- this.hideSiblingNodes = null;
34
- this.modals = [];
35
- this.containers = [];
36
- this.data = [];
37
- this.hideSiblingNodes = hideSiblingNodes;
28
+ function ModalManager() {
38
29
  this.modals = [];
39
30
  this.containers = [];
40
31
  this.data = [];
@@ -58,7 +49,7 @@ var ModalManager = /*#__PURE__*/function () {
58
49
  return modalIndex;
59
50
  }
60
51
 
61
- var data = {
52
+ var containerState = {
62
53
  modals: [modal],
63
54
  classes: className ? className.split(/\s+/) : [],
64
55
  style: {
@@ -68,7 +59,7 @@ var ModalManager = /*#__PURE__*/function () {
68
59
  overflowing: isOverflowing(container)
69
60
  };
70
61
 
71
- if (data.overflowing) {
62
+ if (containerState.overflowing) {
72
63
  var paddingRight = parseInt(getStyle(container, 'paddingRight') || 0, 10);
73
64
  var barSize = getScrollbarSize();
74
65
  addStyle(container, {
@@ -76,9 +67,9 @@ var ModalManager = /*#__PURE__*/function () {
76
67
  });
77
68
  }
78
69
 
79
- data.classes.forEach(addClass.bind(null, container));
70
+ containerState.classes.forEach(addClass.bind(null, container));
80
71
  this.containers.push(container);
81
- this.data.push(data);
72
+ this.data.push(containerState);
82
73
  return modalIndex;
83
74
  };
84
75
 
@@ -90,16 +81,16 @@ var ModalManager = /*#__PURE__*/function () {
90
81
  }
91
82
 
92
83
  var containerIndex = findContainer(this.data, modal);
93
- var data = this.data[containerIndex];
84
+ var containerState = this.data[containerIndex];
94
85
  var container = this.containers[containerIndex];
95
- data.modals.splice(data.modals.indexOf(modal), 1);
86
+ containerState.modals.splice(containerState.modals.indexOf(modal), 1);
96
87
  this.modals.splice(modalIndex, 1);
97
88
 
98
- if (data.modals.length === 0) {
99
- Object.keys(data.style).forEach(function (key) {
100
- return container.style[key] = data.style[key];
89
+ if (containerState.modals.length === 0) {
90
+ Object.keys(containerState.style).forEach(function (key) {
91
+ return container.style[key] = containerState.style[key];
101
92
  });
102
- data.classes.forEach(removeClass.bind(null, container));
93
+ containerState.classes.forEach(removeClass.bind(null, container));
103
94
  this.containers.splice(containerIndex, 1);
104
95
  this.data.splice(containerIndex, 1);
105
96
  }
@@ -2,8 +2,8 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { TypeAttributes, AnimationEventProps } from '../@types/common';
4
4
  export interface OverlayProps extends AnimationEventProps {
5
- container?: HTMLElement | (() => HTMLElement);
6
- children?: React.ReactElement | ((props: any, ref: any) => React.ReactElement);
5
+ container?: HTMLElement | (() => HTMLElement | null) | null;
6
+ children: React.ReactElement | ((props: any, ref: any) => React.ReactElement);
7
7
  childrenProps?: React.HTMLAttributes<HTMLElement>;
8
8
  className?: string;
9
9
  containerPadding?: number;
@@ -13,7 +13,7 @@ export interface OverlayProps extends AnimationEventProps {
13
13
  rootClose?: boolean;
14
14
  transition?: React.ElementType;
15
15
  triggerTarget?: React.RefObject<any>;
16
- onClose?: () => void;
16
+ onClose?: React.ReactEventHandler;
17
17
  }
18
18
  export declare const overlayPropTypes: {
19
19
  container: PropTypes.Requireable<any>;
@@ -1,10 +1,11 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import React, { useState, useRef, useCallback } from 'react';
2
+ import React, { useState, useRef, useCallback, useContext } from 'react';
3
3
  import classNames from 'classnames';
4
4
  import PropTypes from 'prop-types';
5
5
  import Position from './Position';
6
6
  import { mergeRefs, useRootClose } from '../utils';
7
7
  import Fade from '../Animation/Fade';
8
+ import OverlayContext from './OverlayContext';
8
9
  export var overlayPropTypes = {
9
10
  container: PropTypes.any,
10
11
  children: PropTypes.any,
@@ -26,7 +27,11 @@ export var overlayPropTypes = {
26
27
  onExited: PropTypes.func
27
28
  };
28
29
  var Overlay = /*#__PURE__*/React.forwardRef(function (props, ref) {
29
- var container = props.container,
30
+ var _useContext = useContext(OverlayContext),
31
+ overlayContainer = _useContext.overlayContainer;
32
+
33
+ var _props$container = props.container,
34
+ container = _props$container === void 0 ? overlayContainer : _props$container,
30
35
  containerPadding = props.containerPadding,
31
36
  placement = props.placement,
32
37
  rootClose = props.rootClose,
@@ -49,7 +54,7 @@ var Overlay = /*#__PURE__*/React.forwardRef(function (props, ref) {
49
54
  exited = _useState[0],
50
55
  setExited = _useState[1];
51
56
 
52
- var overlayTarget = useRef();
57
+ var overlayTarget = useRef(null);
53
58
 
54
59
  if (open) {
55
60
  if (exited) setExited(false);
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export interface OverlayContextProps {
3
+ overlayContainer?: () => HTMLElement | null;
4
+ }
5
+ declare const OverlayContext: React.Context<OverlayContextProps>;
6
+ export default OverlayContext;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ var OverlayContext = /*#__PURE__*/React.createContext({});
3
+ OverlayContext.displayName = 'OverlayContext';
4
+ export default OverlayContext;
@@ -17,7 +17,7 @@ export interface OverlayTriggerProps extends StandardProps, AnimationEventProps
17
17
  /** Container padding */
18
18
  containerPadding?: number;
19
19
  /** display element */
20
- speaker?: React.ReactElement | ((props: any, ref: React.RefObject<any>) => React.ReactElement);
20
+ speaker: React.ReactElement | ((props: any, ref: React.RefObject<any>) => React.ReactElement);
21
21
  /** Prevent floating element overflow */
22
22
  preventOverflow?: boolean;
23
23
  /** Opern overlay */
@@ -27,7 +27,7 @@ export interface OverlayTriggerProps extends StandardProps, AnimationEventProps
27
27
  /** Whether mouse is allowed to enter the floating layer of popover, whose default value is false. */
28
28
  enterable?: boolean;
29
29
  /** For the monitored component, the event will be bound to this component. */
30
- children?: React.ReactElement | ((props: any, ref: any) => React.ReactElement);
30
+ children: React.ReactElement | ((props: any, ref: any) => React.ReactElement);
31
31
  /** Whether to allow clicking document to close the overlay */
32
32
  rootClose?: boolean;
33
33
  /** Once disabled, the event cannot be triggered. */
@@ -39,27 +39,27 @@ export interface OverlayTriggerProps extends StandardProps, AnimationEventProps
39
39
  /** Set the `id` on `<Overlay>` and `aria-describedby` on `<OverlayTrigger>` */
40
40
  controlId?: string;
41
41
  /** Lose Focus callback function */
42
- onBlur?: () => void;
42
+ onBlur?: React.FocusEventHandler;
43
43
  /** Click on the callback function */
44
- onClick?: () => void;
44
+ onClick?: React.MouseEventHandler;
45
45
  /** RightClick on the callback function */
46
46
  onContextMenu?: React.MouseEventHandler;
47
47
  /** Callback function to get focus */
48
- onFocus?: () => void;
48
+ onFocus?: React.FocusEventHandler;
49
49
  /** Mouse leave callback function */
50
- onMouseOut?: () => void;
50
+ onMouseOut?: React.MouseEventHandler;
51
51
  /** Mouse over callback function */
52
- onMouseOver?: () => void;
52
+ onMouseOver?: React.MouseEventHandler;
53
53
  /** Callback fired when open component */
54
54
  onOpen?: () => void;
55
55
  /** Callback fired when close component */
56
56
  onClose?: () => void;
57
57
  }
58
58
  export interface OverlayTriggerInstance {
59
- root: Element;
60
- updatePosition?: () => void;
61
- open?: () => void;
62
- close?: () => void;
59
+ root: HTMLElement;
60
+ updatePosition: () => void;
61
+ open: () => void;
62
+ close: () => void;
63
63
  }
64
64
  declare const OverlayTrigger: React.ForwardRefExoticComponent<OverlayTriggerProps & React.RefAttributes<unknown>>;
65
65
  export default OverlayTrigger;
@@ -1,13 +1,14 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  import _isUndefined from "lodash/isUndefined";
4
- import React, { useRef, useEffect, useImperativeHandle, useCallback } from 'react';
4
+ import React, { useRef, useEffect, useImperativeHandle, useCallback, useContext } from 'react';
5
5
  import get from 'lodash/get';
6
6
  import isNil from 'lodash/isNil';
7
7
  import contains from 'dom-lib/contains';
8
8
  import Overlay from './Overlay';
9
9
  import { createChainedFunction, usePortal, useControlled } from '../utils';
10
10
  import isOneOf from '../utils/isOneOf';
11
+ import OverlayContext from './OverlayContext';
11
12
 
12
13
  function mergeEvents(events, props) {
13
14
  if (events === void 0) {
@@ -47,8 +48,12 @@ function onMouseEventHandler(handler, event, delay) {
47
48
 
48
49
  var defaultTrigger = ['hover', 'focus'];
49
50
  var OverlayTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
51
+ var _useContext = useContext(OverlayContext),
52
+ overlayContainer = _useContext.overlayContainer;
53
+
50
54
  var children = props.children,
51
- container = props.container,
55
+ _props$container = props.container,
56
+ container = _props$container === void 0 ? overlayContainer : _props$container,
52
57
  controlId = props.controlId,
53
58
  defaultOpen = props.defaultOpen,
54
59
  _props$trigger = props.trigger,
@@ -90,8 +95,8 @@ var OverlayTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
90
95
  // In order to keep the overlay open, a timer is used to delay the closing.
91
96
 
92
97
 
93
- var delayOpenTimer = useRef();
94
- var delayCloseTimer = useRef();
98
+ var delayOpenTimer = useRef(null);
99
+ var delayCloseTimer = useRef(null);
95
100
  var delayOpen = isNil(delayOpenProp) ? delay : delayOpenProp;
96
101
  var delayClose = isNil(delayCloseProp) ? delay : delayCloseProp; // Whether the cursor is on the overlay
97
102
 
@@ -100,8 +105,13 @@ var OverlayTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
100
105
  var isOnTrigger = useRef(false);
101
106
  useEffect(function () {
102
107
  return function () {
103
- clearTimeout(delayOpenTimer.current);
104
- clearTimeout(delayCloseTimer.current);
108
+ if (!isNil(delayOpenTimer.current)) {
109
+ clearTimeout(delayOpenTimer.current);
110
+ }
111
+
112
+ if (!isNil(delayCloseTimer.current)) {
113
+ clearTimeout(delayCloseTimer.current);
114
+ }
105
115
  };
106
116
  }, []);
107
117
  var handleOpen = useCallback(function (delay) {
@@ -207,8 +217,11 @@ var OverlayTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
207
217
  }
208
218
 
209
219
  delayCloseTimer.current = setTimeout(function () {
210
- clearTimeout(delayCloseTimer.current);
211
- delayCloseTimer.current = null;
220
+ if (!isNil(delayCloseTimer.current)) {
221
+ clearTimeout(delayCloseTimer.current);
222
+ delayCloseTimer.current = null;
223
+ }
224
+
212
225
  handleCloseWhenLeave();
213
226
  }, 200);
214
227
  }, [enterable, open, handleClose, handleCloseWhenLeave]);
@@ -2,13 +2,13 @@ import React from 'react';
2
2
  import { TypeAttributes } from '../@types/common';
3
3
  export interface PositionChildProps {
4
4
  className: string;
5
- left: number;
6
- top: number;
5
+ left?: number;
6
+ top?: number;
7
7
  }
8
8
  export interface PositionProps {
9
- children?: (props: PositionChildProps, ref: any) => React.ReactElement;
9
+ children: (props: PositionChildProps, ref: any) => React.ReactElement;
10
10
  className?: string;
11
- container?: HTMLElement | (() => HTMLElement);
11
+ container?: HTMLElement | (() => HTMLElement | null) | null;
12
12
  containerPadding?: number;
13
13
  placement?: TypeAttributes.Placement;
14
14
  preventOverflow?: boolean;