rsuite 5.2.4 → 5.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (511) hide show
  1. package/Avatar/styles/index.less +2 -2
  2. package/AvatarGroup/package.json +7 -0
  3. package/AvatarGroup/styles/index.less +19 -0
  4. package/ButtonGroup/styles/index.less +0 -18
  5. package/CHANGELOG.md +61 -0
  6. package/CheckTreePicker/styles/index.less +14 -1
  7. package/Dropdown/styles/index.less +4 -3
  8. package/Modal/styles/index.less +23 -22
  9. package/Nav/styles/index.less +1 -0
  10. package/Navbar/styles/index.less +19 -5
  11. package/Radio/styles/index.less +6 -0
  12. package/Sidenav/styles/index.less +2 -2
  13. package/Stack/package.json +7 -0
  14. package/Stack/styles/index.less +5 -0
  15. package/TreePicker/styles/index.less +10 -14
  16. package/cjs/@types/common.d.ts +13 -12
  17. package/cjs/@types/utils.d.ts +12 -0
  18. package/cjs/Affix/Affix.js +8 -6
  19. package/cjs/Animation/Transition.d.ts +21 -12
  20. package/cjs/Animation/Transition.js +4 -1
  21. package/cjs/AutoComplete/AutoComplete.js +1 -1
  22. package/cjs/AutoComplete/utils.d.ts +1 -1
  23. package/cjs/Avatar/Avatar.js +10 -3
  24. package/cjs/AvatarGroup/AvatarGroup.d.ts +15 -0
  25. package/cjs/AvatarGroup/AvatarGroup.js +76 -0
  26. package/cjs/AvatarGroup/index.d.ts +3 -0
  27. package/cjs/AvatarGroup/index.js +11 -0
  28. package/cjs/Breadcrumb/Breadcrumb.js +1 -1
  29. package/cjs/Button/Button.js +8 -2
  30. package/cjs/ButtonGroup/ButtonGroup.js +14 -3
  31. package/cjs/ButtonGroup/ButtonGroupContext.d.ts +7 -0
  32. package/cjs/ButtonGroup/ButtonGroupContext.js +13 -0
  33. package/cjs/ButtonGroup/index.d.ts +2 -0
  34. package/cjs/ButtonGroup/index.js +3 -0
  35. package/cjs/Calendar/Calendar.d.ts +4 -4
  36. package/cjs/Calendar/Calendar.js +26 -22
  37. package/cjs/Calendar/CalendarContext.js +1 -1
  38. package/cjs/Calendar/Header.js +1 -3
  39. package/cjs/Calendar/Table.js +1 -1
  40. package/cjs/Calendar/TableRow.js +13 -8
  41. package/cjs/Calendar/TimeDropdown.js +6 -5
  42. package/cjs/Calendar/View.js +9 -5
  43. package/cjs/Calendar/types.d.ts +2 -2
  44. package/cjs/Calendar/useCalendarDate.d.ts +2 -2
  45. package/cjs/Carousel/Carousel.d.ts +1 -1
  46. package/cjs/Carousel/Carousel.js +1 -1
  47. package/cjs/Cascader/Cascader.d.ts +1 -1
  48. package/cjs/Cascader/Cascader.js +10 -10
  49. package/cjs/Cascader/DropdownMenu.d.ts +5 -4
  50. package/cjs/Cascader/utils.d.ts +10 -10
  51. package/cjs/CheckPicker/CheckPicker.d.ts +9 -4
  52. package/cjs/CheckPicker/CheckPicker.js +4 -4
  53. package/cjs/CheckPicker/test/CheckPicker.test.d.ts +1 -0
  54. package/cjs/CheckPicker/test/CheckPicker.test.js +76 -0
  55. package/cjs/CheckTree/index.js +6 -5
  56. package/cjs/CheckTreePicker/CheckTreeNode.d.ts +1 -1
  57. package/cjs/CheckTreePicker/CheckTreeNode.js +7 -9
  58. package/cjs/CheckTreePicker/CheckTreePicker.js +29 -25
  59. package/cjs/CheckTreePicker/utils.d.ts +3 -1
  60. package/cjs/CheckTreePicker/utils.js +12 -10
  61. package/cjs/Checkbox/Checkbox.d.ts +1 -1
  62. package/cjs/Container/Container.js +6 -3
  63. package/cjs/CustomProvider/CustomProvider.d.ts +31 -57
  64. package/cjs/DOMHelper/index.d.ts +12 -12
  65. package/cjs/DatePicker/DatePicker.d.ts +1 -1
  66. package/cjs/DatePicker/DatePicker.js +19 -11
  67. package/cjs/DatePicker/Toolbar.d.ts +12 -9
  68. package/cjs/DatePicker/Toolbar.js +6 -8
  69. package/cjs/DatePicker/types.d.ts +4 -4
  70. package/cjs/DatePicker/utils.d.ts +4 -3
  71. package/cjs/DateRangePicker/Calendar.d.ts +8 -7
  72. package/cjs/DateRangePicker/Calendar.js +1 -1
  73. package/cjs/DateRangePicker/DateRangePicker.d.ts +6 -6
  74. package/cjs/DateRangePicker/DateRangePicker.js +112 -111
  75. package/cjs/DateRangePicker/types.d.ts +2 -1
  76. package/cjs/DateRangePicker/utils.d.ts +6 -6
  77. package/cjs/DateRangePicker/utils.js +7 -2
  78. package/cjs/Disclosure/Disclosure.d.ts +8 -5
  79. package/cjs/Disclosure/Disclosure.js +55 -13
  80. package/cjs/Disclosure/DisclosureButton.d.ts +2 -2
  81. package/cjs/Disclosure/DisclosureButton.js +9 -7
  82. package/cjs/Disclosure/DisclosureContent.js +4 -6
  83. package/cjs/Disclosure/DisclosureContext.d.ts +8 -3
  84. package/cjs/Disclosure/useDisclosureContext.d.ts +2 -0
  85. package/cjs/Disclosure/useDisclosureContext.js +20 -0
  86. package/cjs/Dropdown/Dropdown.d.ts +1 -1
  87. package/cjs/Dropdown/Dropdown.js +1 -1
  88. package/cjs/Dropdown/DropdownContext.d.ts +2 -2
  89. package/cjs/Dropdown/DropdownItem.js +10 -11
  90. package/cjs/Dropdown/DropdownMenu.d.ts +3 -3
  91. package/cjs/Dropdown/DropdownMenu.js +81 -23
  92. package/cjs/Dropdown/DropdownState.d.ts +1 -1
  93. package/cjs/Dropdown/DropdownToggle.js +10 -2
  94. package/cjs/Dropdown/useRenderDropdownItem.d.ts +1 -1
  95. package/cjs/Form/Form.js +1 -1
  96. package/cjs/Form/FormContext.d.ts +1 -1
  97. package/cjs/FormControl/FormControl.d.ts +1 -1
  98. package/cjs/FormControl/FormControl.js +5 -4
  99. package/cjs/FormGroup/FormGroup.d.ts +1 -1
  100. package/cjs/FormGroup/FormGroup.js +9 -4
  101. package/cjs/Input/Input.d.ts +3 -2
  102. package/cjs/InputGroup/InputGroup.d.ts +1 -1
  103. package/cjs/InputNumber/InputNumber.js +6 -2
  104. package/cjs/InputPicker/InputAutosize.js +4 -4
  105. package/cjs/InputPicker/InputPicker.d.ts +2 -2
  106. package/cjs/InputPicker/InputPicker.js +15 -10
  107. package/cjs/List/ListContext.d.ts +1 -1
  108. package/cjs/List/ListContext.js +8 -1
  109. package/cjs/List/helper/AutoScroller.js +4 -2
  110. package/cjs/List/helper/useManager.d.ts +3 -3
  111. package/cjs/List/helper/useManager.js +1 -1
  112. package/cjs/List/helper/useSortHelper.d.ts +3 -3
  113. package/cjs/List/helper/useSortHelper.js +6 -4
  114. package/cjs/List/helper/utils.d.ts +2 -2
  115. package/cjs/MaskedInput/TextMask.d.ts +5 -5
  116. package/cjs/MaskedInput/adjustCaretPosition.d.ts +6 -6
  117. package/cjs/MaskedInput/conformToMask.js +5 -4
  118. package/cjs/MaskedInput/createTextMaskInputElement.d.ts +2 -2
  119. package/cjs/MaskedInput/utilities.d.ts +1 -1
  120. package/cjs/Menu/Menu.js +14 -7
  121. package/cjs/Menu/MenuContext.d.ts +1 -1
  122. package/cjs/Menu/MenuItem.d.ts +1 -1
  123. package/cjs/Menu/MenuItem.js +19 -15
  124. package/cjs/Menu/Menubar.js +8 -8
  125. package/cjs/Menu/useMenu.js +17 -7
  126. package/cjs/Modal/Modal.js +39 -21
  127. package/cjs/Modal/ModalContext.d.ts +2 -2
  128. package/cjs/Modal/utils.d.ts +1 -1
  129. package/cjs/Modal/utils.js +3 -5
  130. package/cjs/MultiCascader/DropdownMenu.d.ts +4 -4
  131. package/cjs/MultiCascader/MultiCascader.js +6 -6
  132. package/cjs/MultiCascader/utils.d.ts +17 -17
  133. package/cjs/Nav/Nav.d.ts +1 -1
  134. package/cjs/Nav/Nav.js +10 -12
  135. package/cjs/Nav/NavContext.d.ts +7 -1
  136. package/cjs/Nav/NavContext.js +1 -0
  137. package/cjs/Nav/NavItem.d.ts +1 -1
  138. package/cjs/Navbar/Navbar.js +1 -1
  139. package/cjs/Navbar/NavbarItem.d.ts +1 -1
  140. package/cjs/Navbar/index.d.ts +1 -0
  141. package/cjs/Navbar/index.js +4 -3
  142. package/cjs/Overlay/Modal.d.ts +2 -2
  143. package/cjs/Overlay/Modal.js +71 -63
  144. package/cjs/Overlay/ModalManager.d.ts +17 -8
  145. package/cjs/Overlay/ModalManager.js +11 -20
  146. package/cjs/Overlay/Overlay.d.ts +3 -3
  147. package/cjs/Overlay/Overlay.js +8 -2
  148. package/cjs/Overlay/OverlayContext.d.ts +6 -0
  149. package/cjs/Overlay/OverlayContext.js +14 -0
  150. package/cjs/Overlay/OverlayTrigger.d.ts +11 -11
  151. package/cjs/Overlay/OverlayTrigger.js +21 -7
  152. package/cjs/Overlay/Position.d.ts +4 -4
  153. package/cjs/Overlay/Position.js +14 -8
  154. package/cjs/Overlay/positionUtils.d.ts +1 -1
  155. package/cjs/Overlay/positionUtils.js +8 -8
  156. package/cjs/Pagination/Pagination.d.ts +1 -1
  157. package/cjs/Pagination/PaginationButton.d.ts +3 -3
  158. package/cjs/Pagination/PaginationGroup.js +5 -3
  159. package/cjs/Panel/Panel.d.ts +1 -1
  160. package/cjs/Panel/Panel.js +2 -2
  161. package/cjs/PanelGroup/PanelGroup.d.ts +2 -2
  162. package/cjs/PanelGroup/PanelGroup.js +8 -5
  163. package/cjs/Picker/DropdownMenu.d.ts +8 -5
  164. package/cjs/Picker/DropdownMenu.js +5 -5
  165. package/cjs/Picker/PickerOverlay.js +4 -3
  166. package/cjs/Picker/PickerToggle.js +4 -3
  167. package/cjs/Picker/PickerToggleTrigger.d.ts +2 -6
  168. package/cjs/Picker/SearchBar.d.ts +1 -1
  169. package/cjs/Picker/SelectedElement.js +2 -1
  170. package/cjs/Picker/propTypes.d.ts +5 -7
  171. package/cjs/Picker/propTypes.js +4 -3
  172. package/cjs/Picker/utils.d.ts +11 -11
  173. package/cjs/Picker/utils.js +22 -18
  174. package/cjs/Placeholder/PlaceholderGrid.js +1 -1
  175. package/cjs/Plaintext/Plaintext.js +2 -1
  176. package/cjs/Radio/Radio.d.ts +1 -1
  177. package/cjs/RadioGroup/RadioGroup.d.ts +2 -2
  178. package/cjs/RadioGroup/RadioGroup.js +1 -1
  179. package/cjs/RangeSlider/RangeSlider.d.ts +2 -2
  180. package/cjs/RangeSlider/RangeSlider.js +6 -4
  181. package/cjs/Rate/Character.js +4 -2
  182. package/cjs/Rate/Rate.js +2 -1
  183. package/cjs/Ripple/Ripple.js +1 -1
  184. package/cjs/SelectPicker/SelectPicker.d.ts +12 -5
  185. package/cjs/SelectPicker/SelectPicker.js +8 -8
  186. package/cjs/SelectPicker/index.d.ts +1 -1
  187. package/cjs/SelectPicker/test/SelectPicker.test.d.ts +1 -0
  188. package/cjs/SelectPicker/test/SelectPicker.test.js +62 -0
  189. package/cjs/Sidenav/Node.d.ts +1 -1
  190. package/cjs/Sidenav/Sidenav.d.ts +4 -4
  191. package/cjs/Sidenav/Sidenav.js +5 -2
  192. package/cjs/Sidenav/SidenavDropdown.js +11 -8
  193. package/cjs/Sidenav/SidenavDropdownItem.js +10 -5
  194. package/cjs/Sidenav/SidenavDropdownMenu.js +9 -5
  195. package/cjs/Sidenav/SidenavItem.d.ts +1 -1
  196. package/cjs/Sidenav/SidenavItem.js +4 -0
  197. package/cjs/Slider/Graduated.d.ts +5 -5
  198. package/cjs/Slider/Handle.d.ts +1 -1
  199. package/cjs/Slider/Handle.js +10 -6
  200. package/cjs/Slider/Mark.d.ts +1 -1
  201. package/cjs/Slider/Slider.d.ts +1 -1
  202. package/cjs/Slider/Slider.js +2 -2
  203. package/cjs/Slider/utils.d.ts +2 -1
  204. package/cjs/Slider/utils.js +4 -5
  205. package/cjs/Stack/Stack.d.ts +26 -0
  206. package/cjs/Stack/Stack.js +86 -0
  207. package/cjs/Stack/index.d.ts +3 -0
  208. package/cjs/Stack/index.js +11 -0
  209. package/cjs/Steps/StepItem.js +1 -1
  210. package/cjs/TagInput/index.js +1 -1
  211. package/cjs/Toggle/Toggle.js +5 -4
  212. package/cjs/Tree/Tree.d.ts +3 -2
  213. package/cjs/Tree/Tree.js +6 -5
  214. package/cjs/Tree/TreeContext.d.ts +0 -1
  215. package/cjs/TreePicker/TreeNode.js +7 -22
  216. package/cjs/TreePicker/TreePicker.js +32 -52
  217. package/cjs/Uploader/UploadFileItem.d.ts +1 -1
  218. package/cjs/Uploader/UploadFileItem.js +2 -2
  219. package/cjs/Uploader/UploadTrigger.d.ts +1 -1
  220. package/cjs/Uploader/UploadTrigger.js +2 -3
  221. package/cjs/Uploader/Uploader.d.ts +5 -5
  222. package/cjs/Uploader/Uploader.js +1 -2
  223. package/cjs/index.d.ts +6 -2
  224. package/cjs/index.js +13 -5
  225. package/cjs/locales/index.d.ts +3 -3
  226. package/cjs/toaster/ToastContainer.d.ts +1 -1
  227. package/cjs/toaster/ToastContainer.js +1 -1
  228. package/cjs/toaster/toaster.js +3 -1
  229. package/cjs/utils/BrowserDetection.js +1 -1
  230. package/cjs/utils/ReactChildren.d.ts +2 -2
  231. package/cjs/utils/ajaxUpload.d.ts +1 -1
  232. package/cjs/utils/ajaxUpload.js +5 -4
  233. package/cjs/utils/appendTooltip.d.ts +1 -1
  234. package/cjs/utils/constants.d.ts +4 -4
  235. package/cjs/utils/createChainedFunction.d.ts +1 -1
  236. package/cjs/utils/getDataGroupBy.d.ts +1 -1
  237. package/cjs/utils/index.d.ts +1 -0
  238. package/cjs/utils/index.js +7 -2
  239. package/cjs/utils/mergeRefs.d.ts +2 -2
  240. package/cjs/utils/previewFile.d.ts +1 -1
  241. package/cjs/utils/propTypeChecker.d.ts +6 -2
  242. package/cjs/utils/propTypeChecker.js +7 -6
  243. package/cjs/utils/reactToString.d.ts +2 -1
  244. package/cjs/utils/statusIcons.d.ts +1 -1
  245. package/cjs/utils/stringToObject.d.ts +1 -1
  246. package/cjs/utils/treeUtils.d.ts +35 -32
  247. package/cjs/utils/treeUtils.js +46 -23
  248. package/cjs/utils/useControlled.d.ts +6 -1
  249. package/cjs/utils/useControlled.js +0 -8
  250. package/cjs/utils/useCustom.js +6 -4
  251. package/cjs/utils/useFocus.d.ts +2 -2
  252. package/cjs/utils/useMount.d.ts +2 -0
  253. package/cjs/utils/useMount.js +19 -0
  254. package/cjs/utils/usePortal.d.ts +2 -2
  255. package/cjs/utils/useRootClose.d.ts +2 -2
  256. package/cjs/utils/useTimeout.d.ts +1 -1
  257. package/cjs/utils/useTimeout.js +5 -3
  258. package/dist/rsuite-rtl.css +95 -210
  259. package/dist/rsuite-rtl.min.css +1 -1
  260. package/dist/rsuite-rtl.min.css.map +1 -1
  261. package/dist/rsuite.css +95 -210
  262. package/dist/rsuite.js +214 -115
  263. package/dist/rsuite.js.map +1 -1
  264. package/dist/rsuite.min.css +1 -1
  265. package/dist/rsuite.min.css.map +1 -1
  266. package/dist/rsuite.min.js +1 -1
  267. package/dist/rsuite.min.js.map +1 -1
  268. package/esm/@types/common.d.ts +13 -12
  269. package/esm/@types/utils.d.ts +12 -0
  270. package/esm/Affix/Affix.js +9 -7
  271. package/esm/Animation/Transition.d.ts +21 -12
  272. package/esm/Animation/Transition.js +4 -1
  273. package/esm/AutoComplete/AutoComplete.js +1 -1
  274. package/esm/AutoComplete/utils.d.ts +1 -1
  275. package/esm/Avatar/Avatar.js +7 -3
  276. package/esm/AvatarGroup/AvatarGroup.d.ts +15 -0
  277. package/esm/AvatarGroup/AvatarGroup.js +57 -0
  278. package/esm/AvatarGroup/index.d.ts +3 -0
  279. package/esm/AvatarGroup/index.js +2 -0
  280. package/esm/Breadcrumb/Breadcrumb.js +1 -1
  281. package/esm/Button/Button.js +6 -2
  282. package/esm/ButtonGroup/ButtonGroup.js +11 -3
  283. package/esm/ButtonGroup/ButtonGroupContext.d.ts +7 -0
  284. package/esm/ButtonGroup/ButtonGroupContext.js +3 -0
  285. package/esm/ButtonGroup/index.d.ts +2 -0
  286. package/esm/ButtonGroup/index.js +2 -0
  287. package/esm/Calendar/Calendar.d.ts +4 -4
  288. package/esm/Calendar/Calendar.js +27 -23
  289. package/esm/Calendar/CalendarContext.js +1 -1
  290. package/esm/Calendar/Header.js +1 -3
  291. package/esm/Calendar/Table.js +1 -1
  292. package/esm/Calendar/TableRow.js +14 -9
  293. package/esm/Calendar/TimeDropdown.js +5 -4
  294. package/esm/Calendar/View.js +10 -6
  295. package/esm/Calendar/types.d.ts +2 -2
  296. package/esm/Calendar/useCalendarDate.d.ts +2 -2
  297. package/esm/Carousel/Carousel.d.ts +1 -1
  298. package/esm/Carousel/Carousel.js +1 -1
  299. package/esm/Cascader/Cascader.d.ts +1 -1
  300. package/esm/Cascader/Cascader.js +10 -10
  301. package/esm/Cascader/DropdownMenu.d.ts +5 -4
  302. package/esm/Cascader/utils.d.ts +10 -10
  303. package/esm/CheckPicker/CheckPicker.d.ts +9 -4
  304. package/esm/CheckPicker/CheckPicker.js +4 -4
  305. package/esm/CheckPicker/test/CheckPicker.test.d.ts +1 -0
  306. package/esm/CheckPicker/test/CheckPicker.test.js +64 -0
  307. package/esm/CheckTree/index.js +7 -6
  308. package/esm/CheckTreePicker/CheckTreeNode.d.ts +1 -1
  309. package/esm/CheckTreePicker/CheckTreeNode.js +4 -7
  310. package/esm/CheckTreePicker/CheckTreePicker.js +28 -23
  311. package/esm/CheckTreePicker/utils.d.ts +3 -1
  312. package/esm/CheckTreePicker/utils.js +12 -10
  313. package/esm/Checkbox/Checkbox.d.ts +1 -1
  314. package/esm/Container/Container.js +7 -4
  315. package/esm/CustomProvider/CustomProvider.d.ts +31 -57
  316. package/esm/DOMHelper/index.d.ts +12 -12
  317. package/esm/DatePicker/DatePicker.d.ts +1 -1
  318. package/esm/DatePicker/DatePicker.js +18 -11
  319. package/esm/DatePicker/Toolbar.d.ts +12 -9
  320. package/esm/DatePicker/Toolbar.js +6 -8
  321. package/esm/DatePicker/types.d.ts +4 -4
  322. package/esm/DatePicker/utils.d.ts +4 -3
  323. package/esm/DateRangePicker/Calendar.d.ts +8 -7
  324. package/esm/DateRangePicker/Calendar.js +1 -1
  325. package/esm/DateRangePicker/DateRangePicker.d.ts +6 -6
  326. package/esm/DateRangePicker/DateRangePicker.js +112 -111
  327. package/esm/DateRangePicker/types.d.ts +2 -1
  328. package/esm/DateRangePicker/utils.d.ts +6 -6
  329. package/esm/DateRangePicker/utils.js +6 -2
  330. package/esm/Disclosure/Disclosure.d.ts +8 -5
  331. package/esm/Disclosure/Disclosure.js +56 -15
  332. package/esm/Disclosure/DisclosureButton.d.ts +2 -2
  333. package/esm/Disclosure/DisclosureButton.js +8 -7
  334. package/esm/Disclosure/DisclosureContent.js +5 -7
  335. package/esm/Disclosure/DisclosureContext.d.ts +8 -3
  336. package/esm/Disclosure/useDisclosureContext.d.ts +2 -0
  337. package/esm/Disclosure/useDisclosureContext.js +11 -0
  338. package/esm/Dropdown/Dropdown.d.ts +1 -1
  339. package/esm/Dropdown/Dropdown.js +1 -1
  340. package/esm/Dropdown/DropdownContext.d.ts +2 -2
  341. package/esm/Dropdown/DropdownItem.js +10 -10
  342. package/esm/Dropdown/DropdownMenu.d.ts +3 -3
  343. package/esm/Dropdown/DropdownMenu.js +82 -24
  344. package/esm/Dropdown/DropdownState.d.ts +1 -1
  345. package/esm/Dropdown/DropdownToggle.js +9 -2
  346. package/esm/Dropdown/useRenderDropdownItem.d.ts +1 -1
  347. package/esm/Form/Form.js +1 -1
  348. package/esm/Form/FormContext.d.ts +1 -1
  349. package/esm/FormControl/FormControl.d.ts +1 -1
  350. package/esm/FormControl/FormControl.js +5 -4
  351. package/esm/FormGroup/FormGroup.d.ts +1 -1
  352. package/esm/FormGroup/FormGroup.js +7 -4
  353. package/esm/Input/Input.d.ts +3 -2
  354. package/esm/InputGroup/InputGroup.d.ts +1 -1
  355. package/esm/InputNumber/InputNumber.js +6 -2
  356. package/esm/InputPicker/InputAutosize.js +4 -4
  357. package/esm/InputPicker/InputPicker.d.ts +2 -2
  358. package/esm/InputPicker/InputPicker.js +15 -10
  359. package/esm/List/ListContext.d.ts +1 -1
  360. package/esm/List/ListContext.js +7 -1
  361. package/esm/List/helper/AutoScroller.js +4 -2
  362. package/esm/List/helper/useManager.d.ts +3 -3
  363. package/esm/List/helper/useManager.js +1 -1
  364. package/esm/List/helper/useSortHelper.d.ts +3 -3
  365. package/esm/List/helper/useSortHelper.js +6 -4
  366. package/esm/List/helper/utils.d.ts +2 -2
  367. package/esm/MaskedInput/TextMask.d.ts +5 -5
  368. package/esm/MaskedInput/adjustCaretPosition.d.ts +6 -6
  369. package/esm/MaskedInput/conformToMask.js +5 -4
  370. package/esm/MaskedInput/createTextMaskInputElement.d.ts +2 -2
  371. package/esm/MaskedInput/utilities.d.ts +1 -1
  372. package/esm/Menu/Menu.js +13 -7
  373. package/esm/Menu/MenuContext.d.ts +1 -1
  374. package/esm/Menu/MenuItem.d.ts +1 -1
  375. package/esm/Menu/MenuItem.js +18 -15
  376. package/esm/Menu/Menubar.js +7 -8
  377. package/esm/Menu/useMenu.js +17 -7
  378. package/esm/Modal/Modal.js +41 -23
  379. package/esm/Modal/ModalContext.d.ts +2 -2
  380. package/esm/Modal/utils.d.ts +1 -1
  381. package/esm/Modal/utils.js +3 -5
  382. package/esm/MultiCascader/DropdownMenu.d.ts +4 -4
  383. package/esm/MultiCascader/MultiCascader.js +6 -6
  384. package/esm/MultiCascader/utils.d.ts +17 -17
  385. package/esm/Nav/Nav.d.ts +1 -1
  386. package/esm/Nav/Nav.js +11 -13
  387. package/esm/Nav/NavContext.d.ts +7 -1
  388. package/esm/Nav/NavContext.js +1 -0
  389. package/esm/Nav/NavItem.d.ts +1 -1
  390. package/esm/Navbar/Navbar.js +1 -1
  391. package/esm/Navbar/NavbarItem.d.ts +1 -1
  392. package/esm/Navbar/index.d.ts +1 -0
  393. package/esm/Navbar/index.js +1 -0
  394. package/esm/Overlay/Modal.d.ts +2 -2
  395. package/esm/Overlay/Modal.js +72 -64
  396. package/esm/Overlay/ModalManager.d.ts +17 -8
  397. package/esm/Overlay/ModalManager.js +11 -20
  398. package/esm/Overlay/Overlay.d.ts +3 -3
  399. package/esm/Overlay/Overlay.js +8 -3
  400. package/esm/Overlay/OverlayContext.d.ts +6 -0
  401. package/esm/Overlay/OverlayContext.js +4 -0
  402. package/esm/Overlay/OverlayTrigger.d.ts +11 -11
  403. package/esm/Overlay/OverlayTrigger.js +21 -8
  404. package/esm/Overlay/Position.d.ts +4 -4
  405. package/esm/Overlay/Position.js +14 -8
  406. package/esm/Overlay/positionUtils.d.ts +1 -1
  407. package/esm/Overlay/positionUtils.js +6 -6
  408. package/esm/Pagination/Pagination.d.ts +1 -1
  409. package/esm/Pagination/PaginationButton.d.ts +3 -3
  410. package/esm/Pagination/PaginationGroup.js +5 -3
  411. package/esm/Panel/Panel.d.ts +1 -1
  412. package/esm/Panel/Panel.js +2 -2
  413. package/esm/PanelGroup/PanelGroup.d.ts +2 -2
  414. package/esm/PanelGroup/PanelGroup.js +9 -6
  415. package/esm/Picker/DropdownMenu.d.ts +8 -5
  416. package/esm/Picker/DropdownMenu.js +5 -5
  417. package/esm/Picker/PickerOverlay.js +4 -3
  418. package/esm/Picker/PickerToggle.js +4 -3
  419. package/esm/Picker/PickerToggleTrigger.d.ts +2 -6
  420. package/esm/Picker/SearchBar.d.ts +1 -1
  421. package/esm/Picker/SelectedElement.js +2 -1
  422. package/esm/Picker/propTypes.d.ts +5 -7
  423. package/esm/Picker/propTypes.js +4 -3
  424. package/esm/Picker/utils.d.ts +11 -11
  425. package/esm/Picker/utils.js +21 -18
  426. package/esm/Placeholder/PlaceholderGrid.js +1 -1
  427. package/esm/Plaintext/Plaintext.js +2 -1
  428. package/esm/Radio/Radio.d.ts +1 -1
  429. package/esm/RadioGroup/RadioGroup.d.ts +2 -2
  430. package/esm/RadioGroup/RadioGroup.js +1 -1
  431. package/esm/RangeSlider/RangeSlider.d.ts +2 -2
  432. package/esm/RangeSlider/RangeSlider.js +5 -4
  433. package/esm/Rate/Character.js +3 -2
  434. package/esm/Rate/Rate.js +2 -1
  435. package/esm/Ripple/Ripple.js +1 -1
  436. package/esm/SelectPicker/SelectPicker.d.ts +12 -5
  437. package/esm/SelectPicker/SelectPicker.js +8 -8
  438. package/esm/SelectPicker/index.d.ts +1 -1
  439. package/esm/SelectPicker/test/SelectPicker.test.d.ts +1 -0
  440. package/esm/SelectPicker/test/SelectPicker.test.js +52 -0
  441. package/esm/Sidenav/Node.d.ts +1 -1
  442. package/esm/Sidenav/Sidenav.d.ts +4 -4
  443. package/esm/Sidenav/Sidenav.js +5 -2
  444. package/esm/Sidenav/SidenavDropdown.js +11 -7
  445. package/esm/Sidenav/SidenavDropdownItem.js +11 -5
  446. package/esm/Sidenav/SidenavDropdownMenu.js +9 -5
  447. package/esm/Sidenav/SidenavItem.d.ts +1 -1
  448. package/esm/Sidenav/SidenavItem.js +4 -0
  449. package/esm/Slider/Graduated.d.ts +5 -5
  450. package/esm/Slider/Handle.d.ts +1 -1
  451. package/esm/Slider/Handle.js +10 -6
  452. package/esm/Slider/Mark.d.ts +1 -1
  453. package/esm/Slider/Slider.d.ts +1 -1
  454. package/esm/Slider/Slider.js +2 -2
  455. package/esm/Slider/utils.d.ts +2 -1
  456. package/esm/Slider/utils.js +5 -2
  457. package/esm/Stack/Stack.d.ts +26 -0
  458. package/esm/Stack/Stack.js +71 -0
  459. package/esm/Stack/index.d.ts +3 -0
  460. package/esm/Stack/index.js +2 -0
  461. package/esm/Steps/StepItem.js +1 -1
  462. package/esm/TagInput/index.js +1 -1
  463. package/esm/Toggle/Toggle.js +5 -4
  464. package/esm/Tree/Tree.d.ts +3 -2
  465. package/esm/Tree/Tree.js +7 -6
  466. package/esm/Tree/TreeContext.d.ts +0 -1
  467. package/esm/TreePicker/TreeNode.js +6 -21
  468. package/esm/TreePicker/TreePicker.js +31 -50
  469. package/esm/Uploader/UploadFileItem.d.ts +1 -1
  470. package/esm/Uploader/UploadFileItem.js +2 -2
  471. package/esm/Uploader/UploadTrigger.d.ts +1 -1
  472. package/esm/Uploader/UploadTrigger.js +2 -3
  473. package/esm/Uploader/Uploader.d.ts +5 -5
  474. package/esm/Uploader/Uploader.js +1 -2
  475. package/esm/index.d.ts +6 -2
  476. package/esm/index.js +3 -1
  477. package/esm/locales/index.d.ts +3 -3
  478. package/esm/toaster/ToastContainer.d.ts +1 -1
  479. package/esm/toaster/ToastContainer.js +1 -1
  480. package/esm/toaster/toaster.js +3 -1
  481. package/esm/utils/BrowserDetection.js +1 -1
  482. package/esm/utils/ReactChildren.d.ts +2 -2
  483. package/esm/utils/ajaxUpload.d.ts +1 -1
  484. package/esm/utils/ajaxUpload.js +5 -4
  485. package/esm/utils/appendTooltip.d.ts +1 -1
  486. package/esm/utils/constants.d.ts +4 -4
  487. package/esm/utils/createChainedFunction.d.ts +1 -1
  488. package/esm/utils/getDataGroupBy.d.ts +1 -1
  489. package/esm/utils/index.d.ts +1 -0
  490. package/esm/utils/index.js +2 -1
  491. package/esm/utils/mergeRefs.d.ts +2 -2
  492. package/esm/utils/previewFile.d.ts +1 -1
  493. package/esm/utils/propTypeChecker.d.ts +6 -2
  494. package/esm/utils/propTypeChecker.js +7 -6
  495. package/esm/utils/reactToString.d.ts +2 -1
  496. package/esm/utils/statusIcons.d.ts +1 -1
  497. package/esm/utils/stringToObject.d.ts +1 -1
  498. package/esm/utils/treeUtils.d.ts +35 -32
  499. package/esm/utils/treeUtils.js +45 -21
  500. package/esm/utils/useControlled.d.ts +6 -1
  501. package/esm/utils/useControlled.js +0 -8
  502. package/esm/utils/useCustom.js +6 -4
  503. package/esm/utils/useFocus.d.ts +2 -2
  504. package/esm/utils/useMount.d.ts +2 -0
  505. package/esm/utils/useMount.js +13 -0
  506. package/esm/utils/usePortal.d.ts +2 -2
  507. package/esm/utils/useRootClose.d.ts +2 -2
  508. package/esm/utils/useTimeout.d.ts +1 -1
  509. package/esm/utils/useTimeout.js +5 -3
  510. package/package.json +2 -2
  511. package/styles/index.less +2 -0
@@ -1,16 +1,16 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- import React, { useRef, useEffect, useState, useCallback } from 'react';
3
+ import React, { useRef, useEffect, useState, useCallback, useMemo } 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
  },
@@ -66,8 +72,7 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
66
72
  open = props.open,
67
73
  _props$autoFocus = props.autoFocus,
68
74
  autoFocus = _props$autoFocus === void 0 ? true : _props$autoFocus,
69
- onBackdropClick = props.onBackdropClick,
70
- onEscapeKeyUp = props.onEscapeKeyUp,
75
+ onEsc = props.onEsc,
71
76
  onExit = props.onExit,
72
77
  onExiting = props.onExiting,
73
78
  onExited = props.onExited,
@@ -76,7 +81,7 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
76
81
  onEntered = props.onEntered,
77
82
  onClose = props.onClose,
78
83
  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"]);
84
+ rest = _objectWithoutPropertiesLoose(props, ["as", "children", "transition", "dialogTransitionTimeout", "style", "className", "container", "animationProps", "containerClassName", "keyboard", "enforceFocus", "backdrop", "backdropTransitionTimeout", "backdropStyle", "backdropClassName", "open", "autoFocus", "onEsc", "onExit", "onExiting", "onExited", "onEnter", "onEntering", "onEntered", "onClose", "onOpen"]);
80
85
 
81
86
  var _useState = useState(!open),
82
87
  exited = _useState[0],
@@ -96,19 +101,13 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
96
101
  }
97
102
 
98
103
  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);
104
+ var lastFocus = useRef(null);
105
+ var handleDocumentKeyDown = useEventCallback(function (event) {
106
+ if (keyboard && event.key === KEY_VALUES.ESC && modal.isTopModal()) {
107
+ onEsc === null || onEsc === void 0 ? void 0 : onEsc(event);
104
108
  onClose === null || onClose === void 0 ? void 0 : onClose(event);
105
109
  }
106
- }, [keyboard, modal, onEscapeKeyUp, onClose]);
107
- var checkForFocus = useCallback(function () {
108
- if (canUseDOM) {
109
- lastFocus.current = document.activeElement;
110
- }
111
- }, []);
110
+ });
112
111
  var restoreLastFocus = useCallback(function () {
113
112
  if (lastFocus.current) {
114
113
  var _lastFocus$current$fo, _lastFocus$current;
@@ -117,55 +116,60 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
117
116
  lastFocus.current = null;
118
117
  }
119
118
  }, []);
120
- var getDialogElement = useCallback(function () {
121
- return getDOMNode(rootRef.current);
122
- }, []);
123
- var handleEnforceFocus = useCallback(function () {
124
- if (!enforceFocus || !modal.isTopModal()) {
125
- return;
126
- }
119
+ /**
120
+ * Determines if the currently focused element is inside the dialog,
121
+ * and if not, returns the focus to the dialog.
122
+ *
123
+ */
127
124
 
125
+ var handleFocusDialog = useEventCallback(function (onBeforeFocusCallback) {
128
126
  var currentActiveElement = document.activeElement;
129
- var dialog = getDialogElement();
127
+ var dialog = modal.dialog;
130
128
 
131
- if (dialog && dialog !== currentActiveElement && !contains(dialog, currentActiveElement)) {
129
+ if (dialog && currentActiveElement && !contains(dialog, currentActiveElement)) {
130
+ onBeforeFocusCallback === null || onBeforeFocusCallback === void 0 ? void 0 : onBeforeFocusCallback();
132
131
  dialog.focus();
133
132
  }
134
- }, [enforceFocus, getDialogElement, modal]);
135
- var handleBackdropClick = useCallback(function (event) {
136
- if (event.target !== event.currentTarget) {
133
+ });
134
+ var handleEnforceFocus = useEventCallback(function () {
135
+ if (!enforceFocus || !modal.isTopModal()) {
137
136
  return;
138
137
  }
139
138
 
140
- onBackdropClick === null || onBackdropClick === void 0 ? void 0 : onBackdropClick(event);
141
-
142
- if (backdrop === true) {
143
- onClose === null || onClose === void 0 ? void 0 : onClose(event);
144
- }
145
- }, [backdrop, onBackdropClick, onClose]);
146
- var documentKeyupListener = useRef();
147
- var docusinListener = useRef();
148
- var handleOpen = useCallback(function () {
149
- var dialog = getDialogElement();
139
+ handleFocusDialog();
140
+ });
141
+ var documentKeyDownListener = useRef();
142
+ var documentFocusListener = useRef();
143
+ var handleOpen = useEventCallback(function () {
150
144
  var containerElement = getContainer(container, document.body);
151
145
  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();
146
+
147
+ if (!documentKeyDownListener.current) {
148
+ documentKeyDownListener.current = on(document, 'keydown', handleDocumentKeyDown);
149
+ }
150
+
151
+ if (!documentFocusListener.current) {
152
+ documentFocusListener.current = on(document, 'focus', handleEnforceFocus, true);
153
+ }
156
154
 
157
155
  if (autoFocus) {
158
- dialog === null || dialog === void 0 ? void 0 : dialog.focus();
156
+ handleFocusDialog(function () {
157
+ lastFocus.current = document.activeElement;
158
+ });
159
159
  }
160
- }, [autoFocus, checkForFocus, container, containerClassName, getDialogElement, handleDocumentKeyUp, handleEnforceFocus, modal, onOpen]);
161
- var handleClose = useCallback(function () {
162
- var _documentKeyupListene, _docusinListener$curr;
160
+
161
+ onOpen === null || onOpen === void 0 ? void 0 : onOpen();
162
+ });
163
+ var handleClose = useEventCallback(function () {
164
+ var _documentKeyDownListe, _documentFocusListene;
163
165
 
164
166
  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();
167
+ (_documentKeyDownListe = documentKeyDownListener.current) === null || _documentKeyDownListe === void 0 ? void 0 : _documentKeyDownListe.off();
168
+ documentKeyDownListener.current = null;
169
+ (_documentFocusListene = documentFocusListener.current) === null || _documentFocusListene === void 0 ? void 0 : _documentFocusListene.off();
170
+ documentFocusListener.current = null;
167
171
  restoreLastFocus();
168
- }, [modal, restoreLastFocus]);
172
+ });
169
173
  useEffect(function () {
170
174
  if (!open) {
171
175
  return;
@@ -186,17 +190,19 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
186
190
  var handleExited = useCallback(function () {
187
191
  setExited(true);
188
192
  }, []);
193
+ var contextValue = useMemo(function () {
194
+ return {
195
+ overlayContainer: function overlayContainer() {
196
+ return modal.dialog;
197
+ }
198
+ };
199
+ }, [modal.dialog]);
189
200
 
190
201
  if (!mountModal) {
191
202
  return null;
192
203
  }
193
204
 
194
205
  var renderBackdrop = function renderBackdrop() {
195
- var backdropPorps = {
196
- style: backdropStyle,
197
- onClick: handleBackdropClick
198
- };
199
-
200
206
  if (Transition) {
201
207
  return /*#__PURE__*/React.createElement(Fade, {
202
208
  transitionAppear: true,
@@ -208,18 +214,19 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
208
214
 
209
215
  return /*#__PURE__*/React.createElement("div", _extends({
210
216
  "aria-hidden": true
211
- }, rest, backdropPorps, {
217
+ }, rest, {
218
+ style: backdropStyle,
212
219
  ref: mergeRefs(modal.setBackdropRef, ref),
213
220
  className: classNames(backdropClassName, className)
214
221
  }));
215
222
  });
216
223
  }
217
224
 
218
- return /*#__PURE__*/React.createElement("div", _extends({
219
- "aria-hidden": true
220
- }, backdropPorps, {
225
+ return /*#__PURE__*/React.createElement("div", {
226
+ "aria-hidden": true,
227
+ style: backdropStyle,
221
228
  className: backdropClassName
222
- }));
229
+ });
223
230
  };
224
231
 
225
232
  var dialogElement = Transition ? /*#__PURE__*/React.createElement(Transition, _extends({}, animationProps, {
@@ -234,12 +241,14 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
234
241
  onEntering: onEntering,
235
242
  onEntered: onEntered
236
243
  }), children) : children;
237
- return /*#__PURE__*/React.createElement(Portal, null, /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
244
+ return /*#__PURE__*/React.createElement(OverlayContext.Provider, {
245
+ value: contextValue
246
+ }, /*#__PURE__*/React.createElement(Portal, null, backdrop && renderBackdrop(), /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
238
247
  ref: mergeRefs(modal.setDialogRef, ref),
239
248
  style: style,
240
249
  className: className,
241
250
  tabIndex: -1
242
- }), backdrop && renderBackdrop(), dialogElement));
251
+ }), dialogElement)));
243
252
  });
244
253
  export var modalPropTypes = {
245
254
  as: PropTypes.elementType,
@@ -264,7 +273,6 @@ Modal.propTypes = _extends({}, animationPropTypes, modalPropTypes, {
264
273
  dialogTransitionTimeout: PropTypes.number,
265
274
  backdropTransitionTimeout: PropTypes.number,
266
275
  transition: PropTypes.any,
267
- onEscapeKeyUp: PropTypes.func,
268
- onBackdropClick: PropTypes.func
276
+ onEsc: PropTypes.func
269
277
  });
270
278
  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;
@@ -16,13 +16,14 @@ import { useUpdateEffect } from '../utils';
16
16
  var usePosition = function usePosition(props, ref) {
17
17
  var _props$placement = props.placement,
18
18
  placement = _props$placement === void 0 ? 'right' : _props$placement,
19
- preventOverflow = props.preventOverflow,
19
+ _props$preventOverflo = props.preventOverflow,
20
+ preventOverflow = _props$preventOverflo === void 0 ? false : _props$preventOverflo,
20
21
  _props$containerPaddi = props.containerPadding,
21
22
  containerPadding = _props$containerPaddi === void 0 ? 0 : _props$containerPaddi,
22
23
  container = props.container,
23
24
  triggerTarget = props.triggerTarget;
24
- var containerRef = useRef();
25
- var lastTargetRef = useRef();
25
+ var containerRef = useRef(null);
26
+ var lastTargetRef = useRef(null);
26
27
  var overlayResizeObserver = useRef();
27
28
  var defaultPosition = {
28
29
  positionLeft: 0,
@@ -68,8 +69,9 @@ var usePosition = function usePosition(props, ref) {
68
69
  return;
69
70
  }
70
71
 
71
- var overlay = getDOMNode(ref.current);
72
- var containerElement = getContainer(typeof container === 'function' ? container() : container, ownerDocument(ref.current).body);
72
+ var overlay = getDOMNode(ref.current); // fixme dom-lib getContainer incorrect type
73
+
74
+ var containerElement = getContainer(typeof container === 'function' ? container() : container !== null && container !== void 0 ? container : null, ownerDocument(ref.current).body);
73
75
  var posi = utils.calcOverlayPosition(overlay, targetElement, containerElement);
74
76
 
75
77
  if (forceUpdateDOM && overlay) {
@@ -77,7 +79,11 @@ var usePosition = function usePosition(props, ref) {
77
79
 
78
80
  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];
79
81
  removeClass(overlay, preClassName);
80
- addClass(overlay, posi.positionClassName);
82
+
83
+ if (posi.positionClassName) {
84
+ addClass(overlay, posi.positionClassName);
85
+ }
86
+
81
87
  addStyle(overlay, {
82
88
  left: posi.positionLeft + "px",
83
89
  top: posi.positionTop + "px"
@@ -134,7 +140,7 @@ var usePosition = function usePosition(props, ref) {
134
140
  var Position = /*#__PURE__*/React.forwardRef(function (props, ref) {
135
141
  var children = props.children,
136
142
  className = props.className;
137
- var childRef = React.useRef();
143
+ var childRef = React.useRef(null);
138
144
 
139
145
  var _usePosition = usePosition(props, childRef),
140
146
  position = _usePosition[0],
@@ -171,7 +177,7 @@ var Position = /*#__PURE__*/React.forwardRef(function (props, ref) {
171
177
  Position.displayName = 'Position';
172
178
  Position.propTypes = {
173
179
  className: PropTypes.string,
174
- children: PropTypes.func,
180
+ children: PropTypes.func.isRequired,
175
181
  container: PropTypes.oneOfType([PropTypes.func, PropTypes.any]),
176
182
  containerPadding: PropTypes.number,
177
183
  placement: PropTypes.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
  };
@@ -29,10 +29,10 @@ function getContainerDimensions(containerNode) {
29
29
  scrollY = scrollTop(ownerDocument(containerNode).documentElement) || scrollTop(containerNode);
30
30
  scrollX = scrollLeft(ownerDocument(containerNode).documentElement) || scrollLeft(containerNode);
31
31
  } else {
32
- var _getOffset = getOffset(containerNode);
32
+ var _ref = getOffset(containerNode);
33
33
 
34
- width = _getOffset.width;
35
- height = _getOffset.height;
34
+ width = _ref.width;
35
+ height = _ref.height;
36
36
  scrollY = scrollTop(containerNode);
37
37
  scrollX = scrollLeft(containerNode);
38
38
  }
@@ -197,9 +197,9 @@ export default (function (props) {
197
197
  calcOverlayPosition: function calcOverlayPosition(overlayNode, target, container) {
198
198
  var childOffset = this.getPosition(target, container);
199
199
 
200
- var _getOffset2 = getOffset(overlayNode),
201
- overlayHeight = _getOffset2.height,
202
- overlayWidth = _getOffset2.width;
200
+ var _ref2 = getOffset(overlayNode),
201
+ overlayHeight = _ref2.height,
202
+ overlayWidth = _ref2.width;
203
203
 
204
204
  var top = childOffset.top,
205
205
  left = childOffset.left;