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/Menu/Menu.js CHANGED
@@ -13,6 +13,8 @@ var _react = _interopRequireWildcard(require("react"));
13
13
 
14
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
15
 
16
+ var _isNil = _interopRequireDefault(require("lodash/isNil"));
17
+
16
18
  var _MenuContext = _interopRequireWildcard(require("./MenuContext"));
17
19
 
18
20
  var _utils = require("../utils");
@@ -21,7 +23,7 @@ var _useUniqueId = _interopRequireDefault(require("../utils/useUniqueId"));
21
23
 
22
24
  var _useMenu = _interopRequireDefault(require("./useMenu"));
23
25
 
24
- var _useFocus = _interopRequireDefault(require("../utils/useFocus"));
26
+ var _useFocus2 = _interopRequireDefault(require("../utils/useFocus"));
25
27
 
26
28
  var _useClickOutside = _interopRequireDefault(require("../utils/useClickOutside"));
27
29
 
@@ -45,8 +47,8 @@ function Menu(props) {
45
47
  renderMenuButton = props.renderMenuButton,
46
48
  renderMenuPopup = props.renderMenuPopup,
47
49
  onToggleMenu = props.onToggleMenu;
48
- var buttonElementRef = (0, _react.useRef)();
49
- var menuElementRef = (0, _react.useRef)();
50
+ var buttonElementRef = (0, _react.useRef)(null);
51
+ var menuElementRef = (0, _react.useRef)(null);
50
52
  var parentMenu = (0, _react.useContext)(_MenuContext.default);
51
53
  var isSubmenu = !!parentMenu;
52
54
  var menu = (0, _useMenu.default)();
@@ -59,8 +61,11 @@ function Menu(props) {
59
61
  var _useCustom = (0, _utils.useCustom)('Menu'),
60
62
  rtl = _useCustom.rtl;
61
63
 
62
- var activeItem = (_items$activeItemInde = items[activeItemIndex]) === null || _items$activeItemInde === void 0 ? void 0 : _items$activeItemInde.element;
63
- var menuFocus = (0, _useFocus.default)(menuElementRef);
64
+ var activeItem = (0, _isNil.default)(activeItemIndex) ? null : (_items$activeItemInde = items[activeItemIndex]) === null || _items$activeItemInde === void 0 ? void 0 : _items$activeItemInde.element;
65
+
66
+ var _useFocus = (0, _useFocus2.default)(menuElementRef),
67
+ grabFocus = _useFocus.grab;
68
+
64
69
  var openMenu = (0, _react.useCallback)(function (event) {
65
70
  dispatch({
66
71
  type: _MenuContext.MenuActionTypes.OpenMenu
@@ -74,8 +79,8 @@ function Menu(props) {
74
79
  }
75
80
 
76
81
  onToggleMenu === null || onToggleMenu === void 0 ? void 0 : onToggleMenu(true, event);
77
- menuFocus.grab();
78
- }, [dispatch, onToggleMenu, menuFocus]);
82
+ grabFocus();
83
+ }, [dispatch, onToggleMenu, grabFocus]);
79
84
  var closeMenu = (0, _react.useCallback)(function (event, returnFocusToButton) {
80
85
  if (returnFocusToButton === void 0) {
81
86
  returnFocusToButton = true;
@@ -91,7 +96,9 @@ function Menu(props) {
91
96
  onToggleMenu === null || onToggleMenu === void 0 ? void 0 : onToggleMenu(false, event);
92
97
 
93
98
  if (returnFocusToButton) {
94
- buttonElementRef.current.focus({
99
+ var _buttonElementRef$cur;
100
+
101
+ (_buttonElementRef$cur = buttonElementRef.current) === null || _buttonElementRef$cur === void 0 ? void 0 : _buttonElementRef$cur.focus({
95
102
  preventScroll: true
96
103
  });
97
104
  }
@@ -106,7 +113,9 @@ function Menu(props) {
106
113
  (0, _useClickOutside.default)({
107
114
  enabled: open,
108
115
  isOutside: function isOutside(event) {
109
- return !buttonElementRef.current.contains(event.target) && !menuElementRef.current.contains(event.target);
116
+ var _buttonElementRef$cur2, _menuElementRef$curre;
117
+
118
+ return !((_buttonElementRef$cur2 = buttonElementRef.current) !== null && _buttonElementRef$cur2 !== void 0 && _buttonElementRef$cur2.contains(event.target)) && !((_menuElementRef$curre = menuElementRef.current) !== null && _menuElementRef$curre !== void 0 && _menuElementRef$curre.contains(event.target));
110
119
  },
111
120
  // fixme if clicking on a focusable element, don't move focus to menu button
112
121
  handle: function handle(event) {
@@ -170,39 +179,48 @@ function Menu(props) {
170
179
  if (disabled) return;
171
180
  openMenu(event);
172
181
  }, [open, disabled, openMenu]);
173
- var buttonEventHandlers = {
174
- onKeyDown: handleButtonKeydown
175
- };
176
- /**
177
- * Bind event of trigger,
178
- * not used in in the expanded state of '<Sidenav>'
179
- */
180
-
181
- if (openMenuOn !== null && openMenuOn !== void 0 && openMenuOn.includes('click')) {
182
- buttonEventHandlers.onClick = handleButtonClick;
183
- }
182
+ var buttonEventHandlers = (0, _react.useMemo)(function () {
183
+ var buttonEventHandlers = {
184
+ onKeyDown: handleButtonKeydown
185
+ };
186
+ /**
187
+ * Bind event of trigger,
188
+ * not used in in the expanded state of '<Sidenav>'
189
+ */
190
+
191
+ if (openMenuOn !== null && openMenuOn !== void 0 && openMenuOn.includes('click')) {
192
+ buttonEventHandlers.onClick = handleButtonClick;
193
+ }
184
194
 
185
- if (openMenuOn !== null && openMenuOn !== void 0 && openMenuOn.includes('contextmenu')) {
186
- buttonEventHandlers.onContextMenu = handleButtonContextMenu;
187
- }
195
+ if (openMenuOn !== null && openMenuOn !== void 0 && openMenuOn.includes('contextmenu')) {
196
+ buttonEventHandlers.onContextMenu = handleButtonContextMenu;
197
+ }
188
198
 
199
+ return buttonEventHandlers;
200
+ }, [openMenuOn, handleButtonKeydown, handleButtonClick, handleButtonContextMenu]);
189
201
  var buttonId = (0, _useUniqueId.default)('menubutton-');
190
- var menuId = (0, _useUniqueId.default)('menu-'); // Ref: https://www.w3.org/TR/wai-aria-practices-1.2/#wai-aria-roles-states-and-properties-14
191
-
192
- var buttonAriaAttributes = {
193
- role: 'button',
194
- 'aria-haspopup': 'menu',
195
- 'aria-expanded': open || undefined,
196
- // it's recommend to remove aria-expanded when menu is hidden
197
- 'aria-controls': menuId
198
- };
199
- var buttonProps = (0, _extends2.default)({
200
- id: buttonId
201
- }, buttonAriaAttributes, buttonEventHandlers, {
202
- // render props
203
- open: open
204
- });
205
- var customMenuButton = renderMenuButton === null || renderMenuButton === void 0 ? void 0 : renderMenuButton(buttonProps, buttonElementRef);
202
+ var menuId = (0, _useUniqueId.default)('menu-');
203
+ var buttonAriaAttributes = (0, _react.useMemo)(function () {
204
+ // Ref: https://www.w3.org/TR/wai-aria-practices-1.2/#wai-aria-roles-states-and-properties-14
205
+ return {
206
+ role: 'button',
207
+ 'aria-haspopup': 'menu',
208
+ 'aria-expanded': open || undefined,
209
+ // it's recommend to remove aria-expanded when menu is hidden
210
+ 'aria-controls': menuId
211
+ };
212
+ }, [open, menuId]);
213
+ var buttonProps = (0, _react.useMemo)(function () {
214
+ return (0, _extends2.default)({
215
+ id: buttonId
216
+ }, buttonAriaAttributes, buttonEventHandlers, {
217
+ // render props
218
+ open: open
219
+ });
220
+ }, [buttonId, buttonAriaAttributes, buttonEventHandlers, open]);
221
+ var customMenuButton = (0, _react.useMemo)(function () {
222
+ return renderMenuButton === null || renderMenuButton === void 0 ? void 0 : renderMenuButton(buttonProps, buttonElementRef);
223
+ }, [renderMenuButton, buttonProps, buttonElementRef]);
206
224
  var buttonElement = customMenuButton !== null && customMenuButton !== void 0 ? customMenuButton : /*#__PURE__*/_react.default.createElement("button", (0, _extends2.default)({
207
225
  ref: buttonElementRef
208
226
  }, buttonProps), menuButtonText);
@@ -336,7 +354,8 @@ function Menu(props) {
336
354
  });
337
355
  var customMenuPopup = renderMenuPopup === null || renderMenuPopup === void 0 ? void 0 : renderMenuPopup((0, _extends2.default)({}, menuProps, {
338
356
  open: open
339
- }), menuElementRef);
357
+ }), menuElementRef); // fixme Wrong children here
358
+
340
359
  var menuElement = customMenuPopup !== null && customMenuPopup !== void 0 ? customMenuPopup : /*#__PURE__*/_react.default.createElement("ul", (0, _extends2.default)({
341
360
  ref: menuElementRef
342
361
  }, menuProps, {
@@ -352,7 +371,7 @@ function Menu(props) {
352
371
  closeMenu(e);
353
372
  }
354
373
  }, [disabled, closeMenu]);
355
- var rootElementRef = (0, _react.useRef)();
374
+ var rootElementRef = (0, _react.useRef)(null);
356
375
  var handleContainerBlur = (0, _react.useCallback)(function (event) {
357
376
  if ((0, _events.isFocusLeaving)(event)) {
358
377
  closeMenu(event, false);
@@ -47,5 +47,5 @@ export declare type MenuAction = {
47
47
  to: MoveFocusTo.Specific;
48
48
  id: string;
49
49
  };
50
- declare const MenuContext: React.Context<MenuContextProps>;
50
+ declare const MenuContext: React.Context<MenuContextProps | null>;
51
51
  export default MenuContext;
@@ -8,7 +8,7 @@ export interface MenuItemProps {
8
8
  /** Render prop */
9
9
  children: (menuitem: React.LiHTMLAttributes<HTMLLIElement> & MenuitemRenderProps, ref: React.Ref<HTMLLIElement>) => React.ReactElement;
10
10
  /** Callback when menuitem is being activated */
11
- onActivate?: (event: React.SyntheticEvent) => void;
11
+ onActivate?: React.MouseEventHandler;
12
12
  }
13
13
  export interface MenuitemRenderProps {
14
14
  selected: boolean;
@@ -11,6 +11,8 @@ var _react = require("react");
11
11
 
12
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
 
14
+ var _isNil = _interopRequireDefault(require("lodash/isNil"));
15
+
14
16
  var _useUniqueId = _interopRequireDefault(require("../utils/useUniqueId"));
15
17
 
16
18
  var _MenuContext = _interopRequireWildcard(require("./MenuContext"));
@@ -19,22 +21,24 @@ var _MenuContext = _interopRequireWildcard(require("./MenuContext"));
19
21
  * Headless ARIA `menuitem`
20
22
  */
21
23
  function MenuItem(props) {
22
- var _menuState$items$menu;
23
-
24
24
  var children = props.children,
25
- selected = props.selected,
26
- disabled = props.disabled,
25
+ _props$selected = props.selected,
26
+ selected = _props$selected === void 0 ? false : _props$selected,
27
+ _props$disabled = props.disabled,
28
+ disabled = _props$disabled === void 0 ? false : _props$disabled,
27
29
  onActivate = props.onActivate;
28
- var menuitemRef = (0, _react.useRef)();
30
+ var menuitemRef = (0, _react.useRef)(null);
29
31
  var menuitemId = (0, _useUniqueId.default)('menuitem-');
30
- var menu = (0, _react.useContext)(_MenuContext.default); // fixme make sure <MenuItem> is used inside a <Menu>
32
+ var menu = (0, _react.useContext)(_MenuContext.default);
31
33
 
32
- var _ref = menu !== null && menu !== void 0 ? menu : [],
33
- menuState = _ref[0],
34
- dispatch = _ref[1]; // Whether this menuitem has focus (indicated by `aria-activedescendant` from parent menu)
34
+ if (!menu) {
35
+ throw new Error('<MenuItem> must be rendered within a <Menu>');
36
+ }
35
37
 
38
+ var menuState = menu[0],
39
+ dispatch = menu[1]; // Whether this menuitem has focus (indicated by `aria-activedescendant` from parent menu)
36
40
 
37
- var hasFocus = (menuState === null || menuState === void 0 ? void 0 : (_menuState$items$menu = menuState.items[menuState === null || menuState === void 0 ? void 0 : menuState.activeItemIndex]) === null || _menuState$items$menu === void 0 ? void 0 : _menuState$items$menu.element) === menuitemRef.current && !!menuitemRef.current;
41
+ var hasFocus = !(0, _isNil.default)(menuitemRef.current) && !(0, _isNil.default)(menuState.activeItemIndex) && menuState.items[menuState.activeItemIndex].element === menuitemRef.current;
38
42
  var handleClick = (0, _react.useCallback)(function (event) {
39
43
  if (disabled) {
40
44
  return;
@@ -44,20 +48,24 @@ function MenuItem(props) {
44
48
  }, [disabled, onActivate]); // Gain/release focus on mousedown in `menubar`
45
49
 
46
50
  var handleMouseDown = (0, _react.useCallback)(function () {
47
- dispatch({
48
- type: _MenuContext.MenuActionTypes.MoveFocus,
49
- to: _MenuContext.MoveFocusTo.Specific,
50
- id: menuitemRef.current.id
51
- });
51
+ if (!(0, _isNil.default)(menuitemRef.current) && !hasFocus) {
52
+ dispatch({
53
+ type: _MenuContext.MenuActionTypes.MoveFocus,
54
+ to: _MenuContext.MoveFocusTo.Specific,
55
+ id: menuitemRef.current.id
56
+ });
57
+ }
52
58
  }, [dispatch]); // Gain/release focus on mouseenter/mouseleave in `menu`
53
59
 
54
60
  var handleMouseMove = (0, _react.useCallback)(function () {
55
- dispatch({
56
- type: _MenuContext.MenuActionTypes.MoveFocus,
57
- to: _MenuContext.MoveFocusTo.Specific,
58
- id: menuitemRef.current.id
59
- });
60
- }, [dispatch]);
61
+ if (!(0, _isNil.default)(menuitemRef.current) && !hasFocus) {
62
+ dispatch({
63
+ type: _MenuContext.MenuActionTypes.MoveFocus,
64
+ to: _MenuContext.MoveFocusTo.Specific,
65
+ id: menuitemRef.current.id
66
+ });
67
+ }
68
+ }, [hasFocus, dispatch]);
61
69
  var handleMouseLeave = (0, _react.useCallback)(function () {
62
70
  dispatch({
63
71
  type: _MenuContext.MenuActionTypes.MoveFocus,
@@ -66,7 +74,7 @@ function MenuItem(props) {
66
74
  }, [dispatch]);
67
75
  (0, _react.useEffect)(function () {
68
76
  var menuitemElement = menuitemRef.current;
69
- dispatch === null || dispatch === void 0 ? void 0 : dispatch({
77
+ dispatch({
70
78
  type: _MenuContext.MenuActionTypes.RegisterItem,
71
79
  element: menuitemElement,
72
80
  props: {
@@ -74,7 +82,7 @@ function MenuItem(props) {
74
82
  }
75
83
  });
76
84
  return function () {
77
- dispatch === null || dispatch === void 0 ? void 0 : dispatch({
85
+ dispatch({
78
86
  type: _MenuContext.MenuActionTypes.UnregisterItem,
79
87
  id: menuitemElement.id
80
88
  });
@@ -9,6 +9,8 @@ exports.default = Menubar;
9
9
 
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
 
12
+ var _isNil = _interopRequireDefault(require("lodash/isNil"));
13
+
12
14
  var _MenuContext = _interopRequireWildcard(require("./MenuContext"));
13
15
 
14
16
  var _utils = require("../utils");
@@ -19,8 +21,6 @@ var _useMenu = _interopRequireDefault(require("./useMenu"));
19
21
 
20
22
  // Headless ARIA `menubar`
21
23
  function Menubar(_ref) {
22
- var _items$activeItemInde;
23
-
24
24
  var _ref$vertical = _ref.vertical,
25
25
  vertical = _ref$vertical === void 0 ? false : _ref$vertical,
26
26
  children = _ref.children,
@@ -32,7 +32,7 @@ function Menubar(_ref) {
32
32
  items = _menubar$.items,
33
33
  activeItemIndex = _menubar$.activeItemIndex,
34
34
  dispatch = menubar[1];
35
- var menubarElementRef = (0, _react.useRef)();
35
+ var menubarElementRef = (0, _react.useRef)(null);
36
36
  var onFocus = (0, _react.useCallback)(function (event) {
37
37
  // Focus moves inside Menubar
38
38
  if ((0, _events.isFocusEntering)(event)) {
@@ -58,7 +58,7 @@ function Menubar(_ref) {
58
58
  rtl = _useCustom.rtl;
59
59
 
60
60
  var onKeyDown = (0, _react.useCallback)(function (event) {
61
- var activeItem = items[activeItemIndex];
61
+ var activeItemElement = (0, _isNil.default)(activeItemIndex) ? null : items[activeItemIndex].element;
62
62
 
63
63
  switch (true) {
64
64
  case !vertical && !rtl && event.key === _utils.KEY_VALUES.RIGHT:
@@ -104,10 +104,10 @@ function Menubar(_ref) {
104
104
  case !vertical && event.key === _utils.KEY_VALUES.DOWN:
105
105
  case vertical && !rtl && event.key === _utils.KEY_VALUES.RIGHT:
106
106
  case vertical && rtl && event.key === _utils.KEY_VALUES.LEFT:
107
- if ((activeItem === null || activeItem === void 0 ? void 0 : activeItem.element.getAttribute('aria-haspopup')) === 'menu') {
107
+ if ((activeItemElement === null || activeItemElement === void 0 ? void 0 : activeItemElement.getAttribute('aria-haspopup')) === 'menu') {
108
108
  event.preventDefault();
109
109
  event.stopPropagation();
110
- activeItem.element.click();
110
+ activeItemElement.click();
111
111
  }
112
112
 
113
113
  break;
@@ -116,7 +116,7 @@ function Menubar(_ref) {
116
116
  case event.key === _utils.KEY_VALUES.SPACE:
117
117
  event.preventDefault();
118
118
  event.stopPropagation();
119
- activeItem === null || activeItem === void 0 ? void 0 : activeItem.element.click();
119
+ activeItemElement === null || activeItemElement === void 0 ? void 0 : activeItemElement.click();
120
120
  break;
121
121
  }
122
122
  }, [rtl, items, activeItemIndex, dispatch, vertical]); // Only used for handling click events bubbling from children
@@ -138,7 +138,7 @@ function Menubar(_ref) {
138
138
  onBlur: onBlur,
139
139
  onKeyDown: onKeyDown,
140
140
  onClick: onClick,
141
- 'aria-activedescendant': (_items$activeItemInde = items[activeItemIndex]) === null || _items$activeItemInde === void 0 ? void 0 : _items$activeItemInde.element.id,
141
+ 'aria-activedescendant': (0, _isNil.default)(activeItemIndex) ? undefined : items[activeItemIndex].element.id,
142
142
  'aria-orientation': vertical ? 'vertical' : undefined // implicitly set 'horizontal'
143
143
 
144
144
  }, menubarElementRef));
@@ -57,8 +57,10 @@ function menuReducer(state, action) {
57
57
 
58
58
  switch (action.to) {
59
59
  case _MenuContext.MoveFocusTo.Next:
60
- for (var i = nextActiveItemIndex === null ? 0 : activeItemIndex + 1; i < items.length; i++) {
61
- if (!items[i].props.disabled) {
60
+ for (var i = activeItemIndex === null ? 0 : activeItemIndex + 1; i < items.length; i++) {
61
+ var _items$i$props;
62
+
63
+ if (!((_items$i$props = items[i].props) !== null && _items$i$props !== void 0 && _items$i$props.disabled)) {
62
64
  nextActiveItemIndex = i;
63
65
  break;
64
66
  }
@@ -67,8 +69,10 @@ function menuReducer(state, action) {
67
69
  break;
68
70
 
69
71
  case _MenuContext.MoveFocusTo.Prev:
70
- for (var _i = nextActiveItemIndex === null ? items.length - 1 : activeItemIndex - 1; _i >= 0; _i--) {
71
- if (!items[_i].props.disabled) {
72
+ for (var _i = activeItemIndex === null ? items.length - 1 : activeItemIndex - 1; _i >= 0; _i--) {
73
+ var _items$_i$props;
74
+
75
+ if (!((_items$_i$props = items[_i].props) !== null && _items$_i$props !== void 0 && _items$_i$props.disabled)) {
72
76
  nextActiveItemIndex = _i;
73
77
  break;
74
78
  }
@@ -78,7 +82,9 @@ function menuReducer(state, action) {
78
82
 
79
83
  case _MenuContext.MoveFocusTo.First:
80
84
  for (var _i2 = 0; _i2 < items.length; _i2++) {
81
- if (!items[_i2].props.disabled) {
85
+ var _items$_i2$props;
86
+
87
+ if (!((_items$_i2$props = items[_i2].props) !== null && _items$_i2$props !== void 0 && _items$_i2$props.disabled)) {
82
88
  nextActiveItemIndex = _i2;
83
89
  break;
84
90
  }
@@ -88,7 +94,9 @@ function menuReducer(state, action) {
88
94
 
89
95
  case _MenuContext.MoveFocusTo.Last:
90
96
  for (var _i3 = items.length - 1; _i3 >= 0; _i3--) {
91
- if (!items[_i3].props.disabled) {
97
+ var _items$_i3$props;
98
+
99
+ if (!((_items$_i3$props = items[_i3].props) !== null && _items$_i3$props !== void 0 && _items$_i3$props.disabled)) {
92
100
  nextActiveItemIndex = _i3;
93
101
  break;
94
102
  }
@@ -98,7 +106,9 @@ function menuReducer(state, action) {
98
106
 
99
107
  case _MenuContext.MoveFocusTo.Specific:
100
108
  for (var _i4 = 0; _i4 < items.length; _i4++) {
101
- if (items[_i4].element.id === action.id && !items[_i4].props.disabled) {
109
+ var _items$_i4$props;
110
+
111
+ if (items[_i4].element.id === action.id && !((_items$_i4$props = items[_i4].props) !== null && _items$_i4$props !== void 0 && _items$_i4$props.disabled)) {
102
112
  nextActiveItemIndex = _i4;
103
113
  break;
104
114
  }
@@ -21,7 +21,7 @@ var _pick = _interopRequireDefault(require("lodash/pick"));
21
21
 
22
22
  var _on = _interopRequireDefault(require("dom-lib/on"));
23
23
 
24
- var _getTransitionEnd = _interopRequireDefault(require("dom-lib/getTransitionEnd"));
24
+ var _getAnimationEnd = _interopRequireDefault(require("dom-lib/getAnimationEnd"));
25
25
 
26
26
  var _Modal = _interopRequireWildcard(require("../Overlay/Modal"));
27
27
 
@@ -70,7 +70,8 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
70
70
  animationTimeout = _props$animationTimeo === void 0 ? 300 : _props$animationTimeo,
71
71
  _props$overflow = props.overflow,
72
72
  overflow = _props$overflow === void 0 ? true : _props$overflow,
73
- drawer = props.drawer,
73
+ _props$drawer = props.drawer,
74
+ drawer = _props$drawer === void 0 ? false : _props$drawer,
74
75
  onClose = props.onClose,
75
76
  onEntered = props.onEntered,
76
77
  onEntering = props.onEntering,
@@ -92,7 +93,7 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
92
93
  var classes = merge(className, prefix(size, {
93
94
  full: full
94
95
  }));
95
- var dialogRef = (0, _react.useRef)();
96
+ var dialogRef = (0, _react.useRef)(null);
96
97
  var transitionEndListener = (0, _react.useRef)(); // The style of the Modal body will be updated with the size of the window or container.
97
98
 
98
99
  var _useBodyStyles = (0, _utils2.useBodyStyles)(dialogRef, {
@@ -124,9 +125,13 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
124
125
  // When the value of `backdrop` is `static`, a jitter animation will be added to the dialog when clicked.
125
126
  if (backdrop === 'static') {
126
127
  setShake(true);
127
- transitionEndListener.current = (0, _on.default)(dialogRef.current, (0, _getTransitionEnd.default)(), function () {
128
- setShake(false);
129
- });
128
+
129
+ if (!transitionEndListener.current && dialogRef.current) {
130
+ //fix: https://github.com/rsuite/rsuite/blob/a93d13c14fb20cc58204babe3331d3c3da3fe1fd/src/Modal/styles/index.less#L59
131
+ transitionEndListener.current = (0, _on.default)(dialogRef.current, (0, _getAnimationEnd.default)(), function () {
132
+ setShake(false);
133
+ });
134
+ }
130
135
  }
131
136
  }, [backdrop]);
132
137
  var handleExited = (0, _react.useCallback)(function (node) {
@@ -135,6 +140,7 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
135
140
  onExited === null || onExited === void 0 ? void 0 : onExited(node);
136
141
  onDestroyEvents();
137
142
  (_transitionEndListene = transitionEndListener.current) === null || _transitionEndListene === void 0 ? void 0 : _transitionEndListene.off();
143
+ transitionEndListener.current = null;
138
144
  }, [onDestroyEvents, onExited]);
139
145
  var handleEntered = (0, _react.useCallback)(function (node) {
140
146
  onEntered === null || onEntered === void 0 ? void 0 : onEntered(node);
@@ -3,10 +3,10 @@ export interface ModalContextProps {
3
3
  /** ID of the dialog element */
4
4
  dialogId: string;
5
5
  /** Pass the close event callback to the header close button. */
6
- onModalClose: (event: React.MouseEvent<Element, MouseEvent>) => void;
6
+ onModalClose?: (event: React.MouseEvent<Element, MouseEvent>) => void;
7
7
  /** Pass the latest style to body. */
8
8
  getBodyStyles?: () => React.CSSProperties;
9
9
  /** Whether this Modal is a Drawer */
10
10
  isDrawer: boolean;
11
11
  }
12
- export declare const ModalContext: React.Context<ModalContextProps>;
12
+ export declare const ModalContext: React.Context<ModalContextProps | null>;
@@ -3,4 +3,4 @@ export declare const useBodyStyles: (ref: React.RefObject<HTMLElement>, options:
3
3
  overflow: boolean;
4
4
  drawer: boolean;
5
5
  prefix: (...classes: any) => string;
6
- }) => [import("react").CSSProperties, (entering?: boolean) => void, () => void];
6
+ }) => [import("react").CSSProperties, (entering?: boolean | undefined) => void, () => void];
@@ -22,7 +22,7 @@ var useBodyStyles = function useBodyStyles(ref, options) {
22
22
  drawer = options.drawer,
23
23
  prefix = options.prefix;
24
24
  var windowResizeListener = (0, _react.useRef)();
25
- var contentElement = (0, _react.useRef)();
25
+ var contentElement = (0, _react.useRef)(null);
26
26
  var contentElementResizeObserver = (0, _react.useRef)();
27
27
  var updateBodyStyles = (0, _react.useCallback)(function (_event, entering) {
28
28
  var dialog = ref.current;
@@ -59,10 +59,8 @@ var useBodyStyles = function useBodyStyles(ref, options) {
59
59
  }, []);
60
60
  var onChangeBodyStyles = (0, _react.useCallback)(function (entering) {
61
61
  if (overflow && !drawer) {
62
- var _ref$current;
63
-
64
- updateBodyStyles(null, entering);
65
- contentElement.current = (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.querySelector("." + prefix('content'));
62
+ updateBodyStyles(undefined, entering);
63
+ contentElement.current = ref.current.querySelector("." + prefix('content'));
66
64
  windowResizeListener.current = (0, _on.default)(window, 'resize', updateBodyStyles);
67
65
  contentElementResizeObserver.current = new _resizeObserver.ResizeObserver(function () {
68
66
  return updateBodyStyles();
@@ -3,15 +3,15 @@ import { ItemDataType, WithAsProps, RsRefForwardingComponent } from '../@types/c
3
3
  import { ValueType } from './MultiCascader';
4
4
  export interface DropdownMenuProps extends WithAsProps {
5
5
  disabledItemValues: ValueType;
6
- value?: ValueType;
6
+ value: ValueType;
7
7
  childrenKey: string;
8
8
  valueKey: string;
9
9
  labelKey: string;
10
- menuWidth: number;
11
- menuHeight: number | string;
10
+ menuWidth?: number;
11
+ menuHeight?: number | string;
12
12
  cascade?: boolean;
13
13
  cascadeData: ItemDataType[][];
14
- cascadePaths: ItemDataType[];
14
+ cascadePaths?: ItemDataType[];
15
15
  uncheckableItemValues: ValueType;
16
16
  renderMenuItem?: (itemLabel: React.MouseEventHandler, item: ItemDataType) => React.ReactNode;
17
17
  renderMenu?: (children: ItemDataType[], menu: React.ReactNode, parentNode?: ItemDataType, layer?: number) => React.ReactNode;
@@ -137,10 +137,10 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
137
137
  selectedPaths = _useState2[0],
138
138
  setSelectedPaths = _useState2[1];
139
139
 
140
- var triggerRef = (0, _react.useRef)();
141
- var overlayRef = (0, _react.useRef)();
142
- var targetRef = (0, _react.useRef)();
143
- var searchInputRef = (0, _react.useRef)();
140
+ var triggerRef = (0, _react.useRef)(null);
141
+ var overlayRef = (0, _react.useRef)(null);
142
+ var targetRef = (0, _react.useRef)(null);
143
+ var searchInputRef = (0, _react.useRef)(null);
144
144
  (0, _Picker.usePublicMethods)(ref, {
145
145
  triggerRef: triggerRef,
146
146
  overlayRef: overlayRef,
@@ -188,7 +188,7 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
188
188
  */
189
189
 
190
190
 
191
- var hasValue = selectedItems.length > 0 || (valueProp === null || valueProp === void 0 ? void 0 : valueProp.length) > 0 && (0, _isFunction.default)(renderValue);
191
+ var hasValue = selectedItems.length > 0 || Number(valueProp === null || valueProp === void 0 ? void 0 : valueProp.length) > 0 && (0, _isFunction.default)(renderValue);
192
192
 
193
193
  var _useClassNames = (0, _utils3.useClassNames)(classPrefix),
194
194
  prefix = _useClassNames.prefix,
@@ -469,7 +469,7 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
469
469
  }
470
470
 
471
471
  if (hasValue && (0, _isFunction.default)(renderValue)) {
472
- selectedElement = renderValue(value.length ? value : valueProp, selectedItems, selectedElement); // If renderValue returns null or undefined, hasValue is false.
472
+ selectedElement = renderValue(value.length ? value : valueProp !== null && valueProp !== void 0 ? valueProp : [], selectedItems, selectedElement); // If renderValue returns null or undefined, hasValue is false.
473
473
 
474
474
  if ((0, _isNil.default)(selectedElement)) {
475
475
  hasValue = false;
@@ -5,50 +5,50 @@ export interface ItemType extends ItemDataType {
5
5
  parent?: ItemType;
6
6
  }
7
7
  interface ItemKeys {
8
- valueKey?: string;
9
- labelKey?: string;
10
- childrenKey?: string;
8
+ valueKey: string;
9
+ labelKey: string;
10
+ childrenKey: string;
11
11
  }
12
12
  /**
13
13
  * Get all parents of a node
14
14
  * @param node
15
15
  */
16
- export declare const getParents: (node: ItemType) => any[];
16
+ export declare const getParents: (node: ItemType) => ItemType[];
17
17
  /**
18
18
  * Check if any child nodes are selected.
19
19
  * @param node
20
20
  * @param value
21
21
  * @param itemKeys
22
22
  */
23
- export declare const isSomeChildChecked: (node: ItemDataType, value: ValueType, itemKeys: ItemKeys) => any;
23
+ export declare const isSomeChildChecked: (node: ItemDataType, value: ValueType, itemKeys: Omit<ItemKeys, 'labelKey'>) => any;
24
24
  /**
25
25
  * Check if the parent is selected.
26
26
  * @param node
27
27
  * @param value
28
28
  * @param itemKeys
29
29
  */
30
- export declare const isSomeParentChecked: (node: ItemDataType, value: ValueType, itemKeys: ItemKeys) => any;
31
- export declare const getOtherItemValuesByUnselectChild: (itemNode: ItemType, value: any, itemKeys: ItemKeys) => any[];
30
+ export declare const isSomeParentChecked: (node: ItemDataType, value: ValueType, itemKeys: Pick<ItemKeys, 'valueKey'>) => any;
31
+ export declare const getOtherItemValuesByUnselectChild: <T>(itemNode: ItemType, value: any, itemKeys: Omit<ItemKeys, 'labelKey'>) => T[];
32
32
  /**
33
33
  * Remove the values of all children.
34
34
  */
35
- export declare const removeAllChildrenValue: (value: ValueType, item: ItemType, itemKeys: ItemKeys) => any[];
35
+ export declare const removeAllChildrenValue: <T>(value: T[], item: ItemType, itemKeys: Omit<ItemKeys, 'labelKey'>) => T[] | undefined;
36
36
  /**
37
37
  * A hook to flatten tree structure data
38
38
  * @param data
39
39
  */
40
40
  export declare function useFlattenData(data: ItemDataType[], itemKeys: ItemKeys): {
41
41
  addFlattenData: (children: ItemDataType[], parent: ItemDataType) => void;
42
- flattenData: ItemDataType[];
42
+ flattenData: ItemDataType<string | number>[];
43
43
  };
44
44
  /**
45
45
  * A hook for column data
46
46
  * @param flattenData
47
47
  */
48
48
  export declare function useColumnData(flattenData: ItemType[]): {
49
- columnData: ItemDataType[][];
49
+ columnData: ItemDataType<string | number>[][];
50
50
  addColumn: (column: ItemDataType[], index: number) => void;
51
- setColumnData: import("react").Dispatch<import("react").SetStateAction<ItemDataType[][]>>;
51
+ setColumnData: import("react").Dispatch<import("react").SetStateAction<ItemDataType<string | number>[][]>>;
52
52
  enforceUpdateColumnData: (nextData: ItemDataType[]) => void;
53
53
  };
54
54
  /**
@@ -56,12 +56,12 @@ export declare function useColumnData(flattenData: ItemType[]): {
56
56
  * @param props
57
57
  * @param flattenData
58
58
  */
59
- export declare function useCascadeValue(props: Partial<MultiCascaderProps>, flattenData: ItemType[]): {
60
- value: ValueType;
61
- setValue: import("react").Dispatch<import("react").SetStateAction<ValueType>>;
62
- splitValue: (item: ItemType, checked: boolean, value: ValueType) => {
63
- value: ValueType;
64
- removedValue: ValueType;
59
+ export declare function useCascadeValue<T>(props: Partial<MultiCascaderProps<T[]>> & ItemKeys, flattenData: ItemType[]): {
60
+ value: T[];
61
+ setValue: import("react").Dispatch<import("react").SetStateAction<T[]>>;
62
+ splitValue: (item: ItemType, checked: boolean, value: T[]) => {
63
+ value: T[];
64
+ removedValue: T[];
65
65
  };
66
66
  };
67
67
  export {};