rsuite 5.2.2 → 5.4.0

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