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
@@ -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
  },
@@ -88,8 +94,7 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
88
94
  open = props.open,
89
95
  _props$autoFocus = props.autoFocus,
90
96
  autoFocus = _props$autoFocus === void 0 ? true : _props$autoFocus,
91
- onBackdropClick = props.onBackdropClick,
92
- onEscapeKeyUp = props.onEscapeKeyUp,
97
+ onEsc = props.onEsc,
93
98
  onExit = props.onExit,
94
99
  onExiting = props.onExiting,
95
100
  onExited = props.onExited,
@@ -98,7 +103,7 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
98
103
  onEntered = props.onEntered,
99
104
  onClose = props.onClose,
100
105
  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"]);
106
+ rest = (0, _objectWithoutPropertiesLoose2.default)(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"]);
102
107
 
103
108
  var _useState = (0, _react.useState)(!open),
104
109
  exited = _useState[0],
@@ -118,19 +123,13 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
118
123
  }
119
124
 
120
125
  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);
126
+ var lastFocus = (0, _react.useRef)(null);
127
+ var handleDocumentKeyDown = (0, _utils2.useEventCallback)(function (event) {
128
+ if (keyboard && event.key === _utils2.KEY_VALUES.ESC && modal.isTopModal()) {
129
+ onEsc === null || onEsc === void 0 ? void 0 : onEsc(event);
126
130
  onClose === null || onClose === void 0 ? void 0 : onClose(event);
127
131
  }
128
- }, [keyboard, modal, onEscapeKeyUp, onClose]);
129
- var checkForFocus = (0, _react.useCallback)(function () {
130
- if (_canUseDOM.default) {
131
- lastFocus.current = document.activeElement;
132
- }
133
- }, []);
132
+ });
134
133
  var restoreLastFocus = (0, _react.useCallback)(function () {
135
134
  if (lastFocus.current) {
136
135
  var _lastFocus$current$fo, _lastFocus$current;
@@ -139,55 +138,60 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
139
138
  lastFocus.current = null;
140
139
  }
141
140
  }, []);
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
- }
141
+ /**
142
+ * Determines if the currently focused element is inside the dialog,
143
+ * and if not, returns the focus to the dialog.
144
+ *
145
+ */
149
146
 
147
+ var handleFocusDialog = (0, _utils2.useEventCallback)(function (onBeforeFocusCallback) {
150
148
  var currentActiveElement = document.activeElement;
151
- var dialog = getDialogElement();
149
+ var dialog = modal.dialog;
152
150
 
153
- if (dialog && dialog !== currentActiveElement && !(0, _contains.default)(dialog, currentActiveElement)) {
151
+ if (dialog && currentActiveElement && !(0, _contains.default)(dialog, currentActiveElement)) {
152
+ onBeforeFocusCallback === null || onBeforeFocusCallback === void 0 ? void 0 : onBeforeFocusCallback();
154
153
  dialog.focus();
155
154
  }
156
- }, [enforceFocus, getDialogElement, modal]);
157
- var handleBackdropClick = (0, _react.useCallback)(function (event) {
158
- if (event.target !== event.currentTarget) {
155
+ });
156
+ var handleEnforceFocus = (0, _utils2.useEventCallback)(function () {
157
+ if (!enforceFocus || !modal.isTopModal()) {
159
158
  return;
160
159
  }
161
160
 
162
- onBackdropClick === null || onBackdropClick === void 0 ? void 0 : onBackdropClick(event);
163
-
164
- if (backdrop === true) {
165
- onClose === null || onClose === void 0 ? void 0 : onClose(event);
166
- }
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();
161
+ handleFocusDialog();
162
+ });
163
+ var documentKeyDownListener = (0, _react.useRef)();
164
+ var documentFocusListener = (0, _react.useRef)();
165
+ var handleOpen = (0, _utils2.useEventCallback)(function () {
172
166
  var containerElement = (0, _getContainer.default)(container, document.body);
173
167
  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();
168
+
169
+ if (!documentKeyDownListener.current) {
170
+ documentKeyDownListener.current = (0, _on.default)(document, 'keydown', handleDocumentKeyDown);
171
+ }
172
+
173
+ if (!documentFocusListener.current) {
174
+ documentFocusListener.current = (0, _on.default)(document, 'focus', handleEnforceFocus, true);
175
+ }
178
176
 
179
177
  if (autoFocus) {
180
- dialog === null || dialog === void 0 ? void 0 : dialog.focus();
178
+ handleFocusDialog(function () {
179
+ lastFocus.current = document.activeElement;
180
+ });
181
181
  }
182
- }, [autoFocus, checkForFocus, container, containerClassName, getDialogElement, handleDocumentKeyUp, handleEnforceFocus, modal, onOpen]);
183
- var handleClose = (0, _react.useCallback)(function () {
184
- var _documentKeyupListene, _docusinListener$curr;
182
+
183
+ onOpen === null || onOpen === void 0 ? void 0 : onOpen();
184
+ });
185
+ var handleClose = (0, _utils2.useEventCallback)(function () {
186
+ var _documentKeyDownListe, _documentFocusListene;
185
187
 
186
188
  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();
189
+ (_documentKeyDownListe = documentKeyDownListener.current) === null || _documentKeyDownListe === void 0 ? void 0 : _documentKeyDownListe.off();
190
+ documentKeyDownListener.current = null;
191
+ (_documentFocusListene = documentFocusListener.current) === null || _documentFocusListene === void 0 ? void 0 : _documentFocusListene.off();
192
+ documentFocusListener.current = null;
189
193
  restoreLastFocus();
190
- }, [modal, restoreLastFocus]);
194
+ });
191
195
  (0, _react.useEffect)(function () {
192
196
  if (!open) {
193
197
  return;
@@ -208,17 +212,19 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
208
212
  var handleExited = (0, _react.useCallback)(function () {
209
213
  setExited(true);
210
214
  }, []);
215
+ var contextValue = (0, _react.useMemo)(function () {
216
+ return {
217
+ overlayContainer: function overlayContainer() {
218
+ return modal.dialog;
219
+ }
220
+ };
221
+ }, [modal.dialog]);
211
222
 
212
223
  if (!mountModal) {
213
224
  return null;
214
225
  }
215
226
 
216
227
  var renderBackdrop = function renderBackdrop() {
217
- var backdropPorps = {
218
- style: backdropStyle,
219
- onClick: handleBackdropClick
220
- };
221
-
222
228
  if (Transition) {
223
229
  return /*#__PURE__*/_react.default.createElement(_Fade.default, {
224
230
  transitionAppear: true,
@@ -229,18 +235,19 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
229
235
  rest = (0, _objectWithoutPropertiesLoose2.default)(fadeProps, ["className"]);
230
236
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
231
237
  "aria-hidden": true
232
- }, rest, backdropPorps, {
238
+ }, rest, {
239
+ style: backdropStyle,
233
240
  ref: (0, _utils2.mergeRefs)(modal.setBackdropRef, ref),
234
241
  className: (0, _classnames.default)(backdropClassName, className)
235
242
  }));
236
243
  });
237
244
  }
238
245
 
239
- return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
240
- "aria-hidden": true
241
- }, backdropPorps, {
246
+ return /*#__PURE__*/_react.default.createElement("div", {
247
+ "aria-hidden": true,
248
+ style: backdropStyle,
242
249
  className: backdropClassName
243
- }));
250
+ });
244
251
  };
245
252
 
246
253
  var dialogElement = Transition ? /*#__PURE__*/_react.default.createElement(Transition, (0, _extends2.default)({}, animationProps, {
@@ -255,12 +262,14 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
255
262
  onEntering: onEntering,
256
263
  onEntered: onEntered
257
264
  }), children) : children;
258
- return /*#__PURE__*/_react.default.createElement(Portal, null, /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
265
+ return /*#__PURE__*/_react.default.createElement(_OverlayContext.default.Provider, {
266
+ value: contextValue
267
+ }, /*#__PURE__*/_react.default.createElement(Portal, null, backdrop && renderBackdrop(), /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
259
268
  ref: (0, _utils2.mergeRefs)(modal.setDialogRef, ref),
260
269
  style: style,
261
270
  className: className,
262
271
  tabIndex: -1
263
- }), backdrop && renderBackdrop(), dialogElement));
272
+ }), dialogElement)));
264
273
  });
265
274
 
266
275
  var modalPropTypes = {
@@ -287,8 +296,7 @@ Modal.propTypes = (0, _extends2.default)({}, _utils.animationPropTypes, modalPro
287
296
  dialogTransitionTimeout: _propTypes.default.number,
288
297
  backdropTransitionTimeout: _propTypes.default.number,
289
298
  transition: _propTypes.default.any,
290
- onEscapeKeyUp: _propTypes.default.func,
291
- onBackdropClick: _propTypes.default.func
299
+ onEsc: _propTypes.default.func
292
300
  });
293
301
  var _default = Modal;
294
302
  exports.default = _default;
@@ -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
  };