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
@@ -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
@@ -19,7 +19,7 @@ var _NavbarBrand = _interopRequireDefault(require("./NavbarBrand"));
19
19
 
20
20
  var _utils = require("../utils");
21
21
 
22
- var NavbarContext = /*#__PURE__*/_react.default.createContext(null);
22
+ var NavbarContext = /*#__PURE__*/_react.default.createContext(false);
23
23
 
24
24
  exports.NavbarContext = NavbarContext;
25
25
 
@@ -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>;
@@ -17,8 +17,6 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
17
17
 
18
18
  var _classnames = _interopRequireDefault(require("classnames"));
19
19
 
20
- var _canUseDOM = _interopRequireDefault(require("dom-lib/canUseDOM"));
21
-
22
20
  var _contains = _interopRequireDefault(require("dom-lib/contains"));
23
21
 
24
22
  var _getContainer = _interopRequireDefault(require("dom-lib/getContainer"));
@@ -33,6 +31,8 @@ var _utils = require("../Animation/utils");
33
31
 
34
32
  var _utils2 = require("../utils");
35
33
 
34
+ var _OverlayContext = _interopRequireDefault(require("./OverlayContext"));
35
+
36
36
  var manager;
37
37
 
38
38
  function getManager() {
@@ -47,6 +47,12 @@ var useModalManager = function useModalManager() {
47
47
  backdrop: null
48
48
  });
49
49
  return {
50
+ get dialog() {
51
+ var _modal$current;
52
+
53
+ return (_modal$current = modal.current) === null || _modal$current === void 0 ? void 0 : _modal$current.dialog;
54
+ },
55
+
50
56
  add: function add(containerElement, containerClassName) {
51
57
  return modalManager.add(modal.current, containerElement, containerClassName);
52
58
  },
@@ -89,7 +95,7 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
89
95
  _props$autoFocus = props.autoFocus,
90
96
  autoFocus = _props$autoFocus === void 0 ? true : _props$autoFocus,
91
97
  onBackdropClick = props.onBackdropClick,
92
- onEscapeKeyUp = props.onEscapeKeyUp,
98
+ onEsc = props.onEsc,
93
99
  onExit = props.onExit,
94
100
  onExiting = props.onExiting,
95
101
  onExited = props.onExited,
@@ -98,7 +104,7 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
98
104
  onEntered = props.onEntered,
99
105
  onClose = props.onClose,
100
106
  onOpen = props.onOpen,
101
- rest = (0, _objectWithoutPropertiesLoose2.default)(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"]);
107
+ rest = (0, _objectWithoutPropertiesLoose2.default)(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"]);
102
108
 
103
109
  var _useState = (0, _react.useState)(!open),
104
110
  exited = _useState[0],
@@ -118,19 +124,13 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
118
124
  }
119
125
 
120
126
  var mountModal = open || Transition && !exited;
121
- var rootRef = (0, _react.useRef)();
122
- var lastFocus = (0, _react.useRef)();
123
- var handleDocumentKeyUp = (0, _react.useCallback)(function (event) {
124
- if (keyboard && event.keyCode === 27 && modal.isTopModal()) {
125
- onEscapeKeyUp === null || onEscapeKeyUp === void 0 ? void 0 : onEscapeKeyUp(event);
127
+ var lastFocus = (0, _react.useRef)(null);
128
+ var handleDocumentKeyDown = (0, _utils2.useEventCallback)(function (event) {
129
+ if (keyboard && event.key === _utils2.KEY_VALUES.ESC && modal.isTopModal()) {
130
+ onEsc === null || onEsc === void 0 ? void 0 : onEsc(event);
126
131
  onClose === null || onClose === void 0 ? void 0 : onClose(event);
127
132
  }
128
- }, [keyboard, modal, onEscapeKeyUp, onClose]);
129
- var checkForFocus = (0, _react.useCallback)(function () {
130
- if (_canUseDOM.default) {
131
- lastFocus.current = document.activeElement;
132
- }
133
- }, []);
133
+ });
134
134
  var restoreLastFocus = (0, _react.useCallback)(function () {
135
135
  if (lastFocus.current) {
136
136
  var _lastFocus$current$fo, _lastFocus$current;
@@ -139,22 +139,29 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
139
139
  lastFocus.current = null;
140
140
  }
141
141
  }, []);
142
- var getDialogElement = (0, _react.useCallback)(function () {
143
- return (0, _utils2.getDOMNode)(rootRef.current);
144
- }, []);
145
- var handleEnforceFocus = (0, _react.useCallback)(function () {
146
- if (!enforceFocus || !modal.isTopModal()) {
147
- return;
148
- }
142
+ /**
143
+ * Determines if the currently focused element is inside the dialog,
144
+ * and if not, returns the focus to the dialog.
145
+ *
146
+ */
149
147
 
148
+ var handleFocusDialog = (0, _utils2.useEventCallback)(function (onBeforeFocusCallback) {
150
149
  var currentActiveElement = document.activeElement;
151
- var dialog = getDialogElement();
150
+ var dialog = modal.dialog;
152
151
 
153
- if (dialog && dialog !== currentActiveElement && !(0, _contains.default)(dialog, currentActiveElement)) {
152
+ if (dialog && currentActiveElement && !(0, _contains.default)(dialog, currentActiveElement)) {
153
+ onBeforeFocusCallback === null || onBeforeFocusCallback === void 0 ? void 0 : onBeforeFocusCallback();
154
154
  dialog.focus();
155
155
  }
156
- }, [enforceFocus, getDialogElement, modal]);
157
- var handleBackdropClick = (0, _react.useCallback)(function (event) {
156
+ });
157
+ var handleEnforceFocus = (0, _utils2.useEventCallback)(function () {
158
+ if (!enforceFocus || !modal.isTopModal()) {
159
+ return;
160
+ }
161
+
162
+ handleFocusDialog();
163
+ });
164
+ var handleBackdropClick = (0, _utils2.useEventCallback)(function (event) {
158
165
  if (event.target !== event.currentTarget) {
159
166
  return;
160
167
  }
@@ -164,30 +171,39 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
164
171
  if (backdrop === true) {
165
172
  onClose === null || onClose === void 0 ? void 0 : onClose(event);
166
173
  }
167
- }, [backdrop, onBackdropClick, onClose]);
168
- var documentKeyupListener = (0, _react.useRef)();
169
- var docusinListener = (0, _react.useRef)();
170
- var handleOpen = (0, _react.useCallback)(function () {
171
- var dialog = getDialogElement();
174
+ });
175
+ var documentKeyDownListener = (0, _react.useRef)();
176
+ var documentFocusListener = (0, _react.useRef)();
177
+ var handleOpen = (0, _utils2.useEventCallback)(function () {
172
178
  var containerElement = (0, _getContainer.default)(container, document.body);
173
179
  modal.add(containerElement, containerClassName);
174
- documentKeyupListener.current = (0, _on.default)(document, 'keydown', handleDocumentKeyUp);
175
- docusinListener.current = (0, _on.default)(document, 'focus', handleEnforceFocus, true);
176
- onOpen === null || onOpen === void 0 ? void 0 : onOpen();
177
- checkForFocus();
180
+
181
+ if (!documentKeyDownListener.current) {
182
+ documentKeyDownListener.current = (0, _on.default)(document, 'keydown', handleDocumentKeyDown);
183
+ }
184
+
185
+ if (!documentFocusListener.current) {
186
+ documentFocusListener.current = (0, _on.default)(document, 'focus', handleEnforceFocus, true);
187
+ }
178
188
 
179
189
  if (autoFocus) {
180
- dialog === null || dialog === void 0 ? void 0 : dialog.focus();
190
+ handleFocusDialog(function () {
191
+ lastFocus.current = document.activeElement;
192
+ });
181
193
  }
182
- }, [autoFocus, checkForFocus, container, containerClassName, getDialogElement, handleDocumentKeyUp, handleEnforceFocus, modal, onOpen]);
183
- var handleClose = (0, _react.useCallback)(function () {
184
- var _documentKeyupListene, _docusinListener$curr;
194
+
195
+ onOpen === null || onOpen === void 0 ? void 0 : onOpen();
196
+ });
197
+ var handleClose = (0, _utils2.useEventCallback)(function () {
198
+ var _documentKeyDownListe, _documentFocusListene;
185
199
 
186
200
  modal.remove();
187
- (_documentKeyupListene = documentKeyupListener.current) === null || _documentKeyupListene === void 0 ? void 0 : _documentKeyupListene.off();
188
- (_docusinListener$curr = docusinListener.current) === null || _docusinListener$curr === void 0 ? void 0 : _docusinListener$curr.off();
201
+ (_documentKeyDownListe = documentKeyDownListener.current) === null || _documentKeyDownListe === void 0 ? void 0 : _documentKeyDownListe.off();
202
+ documentKeyDownListener.current = null;
203
+ (_documentFocusListene = documentFocusListener.current) === null || _documentFocusListene === void 0 ? void 0 : _documentFocusListene.off();
204
+ documentFocusListener.current = null;
189
205
  restoreLastFocus();
190
- }, [modal, restoreLastFocus]);
206
+ });
191
207
  (0, _react.useEffect)(function () {
192
208
  if (!open) {
193
209
  return;
@@ -208,6 +224,13 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
208
224
  var handleExited = (0, _react.useCallback)(function () {
209
225
  setExited(true);
210
226
  }, []);
227
+ var contextValue = (0, _react.useMemo)(function () {
228
+ return {
229
+ overlayContainer: function overlayContainer() {
230
+ return modal.dialog;
231
+ }
232
+ };
233
+ }, [modal.dialog]);
211
234
 
212
235
  if (!mountModal) {
213
236
  return null;
@@ -255,12 +278,14 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
255
278
  onEntering: onEntering,
256
279
  onEntered: onEntered
257
280
  }), children) : children;
258
- return /*#__PURE__*/_react.default.createElement(Portal, null, /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
281
+ return /*#__PURE__*/_react.default.createElement(_OverlayContext.default.Provider, {
282
+ value: contextValue
283
+ }, /*#__PURE__*/_react.default.createElement(Portal, null, /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
259
284
  ref: (0, _utils2.mergeRefs)(modal.setDialogRef, ref),
260
285
  style: style,
261
286
  className: className,
262
287
  tabIndex: -1
263
- }), backdrop && renderBackdrop(), dialogElement));
288
+ }), backdrop && renderBackdrop(), dialogElement)));
264
289
  });
265
290
 
266
291
  var modalPropTypes = {
@@ -287,7 +312,7 @@ Modal.propTypes = (0, _extends2.default)({}, _utils.animationPropTypes, modalPro
287
312
  dialogTransitionTimeout: _propTypes.default.number,
288
313
  backdropTransitionTimeout: _propTypes.default.number,
289
314
  transition: _propTypes.default.any,
290
- onEscapeKeyUp: _propTypes.default.func,
315
+ onEsc: _propTypes.default.func,
291
316
  onBackdropClick: _propTypes.default.func
292
317
  });
293
318
  var _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;
@@ -37,16 +37,7 @@ function findContainer(data, modal) {
37
37
  }
38
38
 
39
39
  var ModalManager = /*#__PURE__*/function () {
40
- function ModalManager(hideSiblingNodes) {
41
- if (hideSiblingNodes === void 0) {
42
- hideSiblingNodes = true;
43
- }
44
-
45
- this.hideSiblingNodes = null;
46
- this.modals = [];
47
- this.containers = [];
48
- this.data = [];
49
- this.hideSiblingNodes = hideSiblingNodes;
40
+ function ModalManager() {
50
41
  this.modals = [];
51
42
  this.containers = [];
52
43
  this.data = [];
@@ -70,7 +61,7 @@ var ModalManager = /*#__PURE__*/function () {
70
61
  return modalIndex;
71
62
  }
72
63
 
73
- var data = {
64
+ var containerState = {
74
65
  modals: [modal],
75
66
  classes: className ? className.split(/\s+/) : [],
76
67
  style: {
@@ -80,7 +71,7 @@ var ModalManager = /*#__PURE__*/function () {
80
71
  overflowing: (0, _isOverflowing.default)(container)
81
72
  };
82
73
 
83
- if (data.overflowing) {
74
+ if (containerState.overflowing) {
84
75
  var paddingRight = parseInt((0, _getStyle.default)(container, 'paddingRight') || 0, 10);
85
76
  var barSize = (0, _getScrollbarSize.default)();
86
77
  (0, _addStyle.default)(container, {
@@ -88,9 +79,9 @@ var ModalManager = /*#__PURE__*/function () {
88
79
  });
89
80
  }
90
81
 
91
- data.classes.forEach(_addClass.default.bind(null, container));
82
+ containerState.classes.forEach(_addClass.default.bind(null, container));
92
83
  this.containers.push(container);
93
- this.data.push(data);
84
+ this.data.push(containerState);
94
85
  return modalIndex;
95
86
  };
96
87
 
@@ -102,16 +93,16 @@ var ModalManager = /*#__PURE__*/function () {
102
93
  }
103
94
 
104
95
  var containerIndex = findContainer(this.data, modal);
105
- var data = this.data[containerIndex];
96
+ var containerState = this.data[containerIndex];
106
97
  var container = this.containers[containerIndex];
107
- data.modals.splice(data.modals.indexOf(modal), 1);
98
+ containerState.modals.splice(containerState.modals.indexOf(modal), 1);
108
99
  this.modals.splice(modalIndex, 1);
109
100
 
110
- if (data.modals.length === 0) {
111
- Object.keys(data.style).forEach(function (key) {
112
- return container.style[key] = data.style[key];
101
+ if (containerState.modals.length === 0) {
102
+ Object.keys(containerState.style).forEach(function (key) {
103
+ return container.style[key] = containerState.style[key];
113
104
  });
114
- data.classes.forEach(_removeClass.default.bind(null, container));
105
+ containerState.classes.forEach(_removeClass.default.bind(null, container));
115
106
  this.containers.splice(containerIndex, 1);
116
107
  this.data.splice(containerIndex, 1);
117
108
  }
@@ -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>;
@@ -21,6 +21,8 @@ var _utils = require("../utils");
21
21
 
22
22
  var _Fade = _interopRequireDefault(require("../Animation/Fade"));
23
23
 
24
+ var _OverlayContext = _interopRequireDefault(require("./OverlayContext"));
25
+
24
26
  var overlayPropTypes = {
25
27
  container: _propTypes.default.any,
26
28
  children: _propTypes.default.any,
@@ -44,7 +46,11 @@ var overlayPropTypes = {
44
46
  exports.overlayPropTypes = overlayPropTypes;
45
47
 
46
48
  var Overlay = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
47
- var container = props.container,
49
+ var _useContext = (0, _react.useContext)(_OverlayContext.default),
50
+ overlayContainer = _useContext.overlayContainer;
51
+
52
+ var _props$container = props.container,
53
+ container = _props$container === void 0 ? overlayContainer : _props$container,
48
54
  containerPadding = props.containerPadding,
49
55
  placement = props.placement,
50
56
  rootClose = props.rootClose,
@@ -67,7 +73,7 @@ var Overlay = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
67
73
  exited = _useState[0],
68
74
  setExited = _useState[1];
69
75
 
70
- var overlayTarget = (0, _react.useRef)();
76
+ var overlayTarget = (0, _react.useRef)(null);
71
77
 
72
78
  if (open) {
73
79
  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,14 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var OverlayContext = /*#__PURE__*/_react.default.createContext({});
11
+
12
+ OverlayContext.displayName = 'OverlayContext';
13
+ var _default = OverlayContext;
14
+ exports.default = _default;
@@ -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;
@@ -27,6 +27,8 @@ var _utils = require("../utils");
27
27
 
28
28
  var _isOneOf = _interopRequireDefault(require("../utils/isOneOf"));
29
29
 
30
+ var _OverlayContext = _interopRequireDefault(require("./OverlayContext"));
31
+
30
32
  function mergeEvents(events, props) {
31
33
  if (events === void 0) {
32
34
  events = {};
@@ -66,8 +68,12 @@ function onMouseEventHandler(handler, event, delay) {
66
68
  var defaultTrigger = ['hover', 'focus'];
67
69
 
68
70
  var OverlayTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
71
+ var _useContext = (0, _react.useContext)(_OverlayContext.default),
72
+ overlayContainer = _useContext.overlayContainer;
73
+
69
74
  var children = props.children,
70
- container = props.container,
75
+ _props$container = props.container,
76
+ container = _props$container === void 0 ? overlayContainer : _props$container,
71
77
  controlId = props.controlId,
72
78
  defaultOpen = props.defaultOpen,
73
79
  _props$trigger = props.trigger,
@@ -109,8 +115,8 @@ var OverlayTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref
109
115
  // In order to keep the overlay open, a timer is used to delay the closing.
110
116
 
111
117
 
112
- var delayOpenTimer = (0, _react.useRef)();
113
- var delayCloseTimer = (0, _react.useRef)();
118
+ var delayOpenTimer = (0, _react.useRef)(null);
119
+ var delayCloseTimer = (0, _react.useRef)(null);
114
120
  var delayOpen = (0, _isNil.default)(delayOpenProp) ? delay : delayOpenProp;
115
121
  var delayClose = (0, _isNil.default)(delayCloseProp) ? delay : delayCloseProp; // Whether the cursor is on the overlay
116
122
 
@@ -119,8 +125,13 @@ var OverlayTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref
119
125
  var isOnTrigger = (0, _react.useRef)(false);
120
126
  (0, _react.useEffect)(function () {
121
127
  return function () {
122
- clearTimeout(delayOpenTimer.current);
123
- clearTimeout(delayCloseTimer.current);
128
+ if (!(0, _isNil.default)(delayOpenTimer.current)) {
129
+ clearTimeout(delayOpenTimer.current);
130
+ }
131
+
132
+ if (!(0, _isNil.default)(delayCloseTimer.current)) {
133
+ clearTimeout(delayCloseTimer.current);
134
+ }
124
135
  };
125
136
  }, []);
126
137
  var handleOpen = (0, _react.useCallback)(function (delay) {
@@ -226,8 +237,11 @@ var OverlayTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref
226
237
  }
227
238
 
228
239
  delayCloseTimer.current = setTimeout(function () {
229
- clearTimeout(delayCloseTimer.current);
230
- delayCloseTimer.current = null;
240
+ if (!(0, _isNil.default)(delayCloseTimer.current)) {
241
+ clearTimeout(delayCloseTimer.current);
242
+ delayCloseTimer.current = null;
243
+ }
244
+
231
245
  handleCloseWhenLeave();
232
246
  }, 200);
233
247
  }, [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;
@@ -36,13 +36,14 @@ var _utils = require("../utils");
36
36
  var usePosition = function usePosition(props, ref) {
37
37
  var _props$placement = props.placement,
38
38
  placement = _props$placement === void 0 ? 'right' : _props$placement,
39
- preventOverflow = props.preventOverflow,
39
+ _props$preventOverflo = props.preventOverflow,
40
+ preventOverflow = _props$preventOverflo === void 0 ? false : _props$preventOverflo,
40
41
  _props$containerPaddi = props.containerPadding,
41
42
  containerPadding = _props$containerPaddi === void 0 ? 0 : _props$containerPaddi,
42
43
  container = props.container,
43
44
  triggerTarget = props.triggerTarget;
44
- var containerRef = (0, _react.useRef)();
45
- var lastTargetRef = (0, _react.useRef)();
45
+ var containerRef = (0, _react.useRef)(null);
46
+ var lastTargetRef = (0, _react.useRef)(null);
46
47
  var overlayResizeObserver = (0, _react.useRef)();
47
48
  var defaultPosition = {
48
49
  positionLeft: 0,
@@ -88,8 +89,9 @@ var usePosition = function usePosition(props, ref) {
88
89
  return;
89
90
  }
90
91
 
91
- var overlay = (0, _utils.getDOMNode)(ref.current);
92
- var containerElement = (0, _getContainer.default)(typeof container === 'function' ? container() : container, (0, _ownerDocument.default)(ref.current).body);
92
+ var overlay = (0, _utils.getDOMNode)(ref.current); // fixme dom-lib getContainer incorrect type
93
+
94
+ var containerElement = (0, _getContainer.default)(typeof container === 'function' ? container() : container !== null && container !== void 0 ? container : null, (0, _ownerDocument.default)(ref.current).body);
93
95
  var posi = utils.calcOverlayPosition(overlay, targetElement, containerElement);
94
96
 
95
97
  if (forceUpdateDOM && overlay) {
@@ -97,7 +99,11 @@ var usePosition = function usePosition(props, ref) {
97
99
 
98
100
  var preClassName = overlay === null || overlay === void 0 ? void 0 : (_overlay$className = overlay.className) === null || _overlay$className === void 0 ? void 0 : (_overlay$className$ma = _overlay$className.match(/(placement-\S+)/)) === null || _overlay$className$ma === void 0 ? void 0 : _overlay$className$ma[0];
99
101
  (0, _removeClass.default)(overlay, preClassName);
100
- (0, _addClass.default)(overlay, posi.positionClassName);
102
+
103
+ if (posi.positionClassName) {
104
+ (0, _addClass.default)(overlay, posi.positionClassName);
105
+ }
106
+
101
107
  (0, _addStyle.default)(overlay, {
102
108
  left: posi.positionLeft + "px",
103
109
  top: posi.positionTop + "px"
@@ -155,7 +161,7 @@ var Position = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
155
161
  var children = props.children,
156
162
  className = props.className;
157
163
 
158
- var childRef = _react.default.useRef();
164
+ var childRef = _react.default.useRef(null);
159
165
 
160
166
  var _usePosition = usePosition(props, childRef),
161
167
  position = _usePosition[0],
@@ -193,7 +199,7 @@ var Position = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
193
199
  Position.displayName = 'Position';
194
200
  Position.propTypes = {
195
201
  className: _propTypes.default.string,
196
- children: _propTypes.default.func,
202
+ children: _propTypes.default.func.isRequired,
197
203
  container: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.any]),
198
204
  containerPadding: _propTypes.default.number,
199
205
  placement: _propTypes.default.any,
@@ -29,7 +29,7 @@ declare const _default: (props: UtilProps) => {
29
29
  left: number;
30
30
  height: number;
31
31
  width: number;
32
- };
32
+ } | null;
33
33
  calcAutoPlacement(targetOffset: any, container: any, overlay: any): any;
34
34
  calcOverlayPosition(overlayNode: any, target: any, container: any): PositionType;
35
35
  };