rsuite 5.12.0 → 5.14.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 (264) hide show
  1. package/Button/styles/index.less +1 -0
  2. package/CHANGELOG.md +49 -0
  3. package/Dropdown/styles/index.less +8 -3
  4. package/Grid/styles/index.less +42 -10
  5. package/Nav/styles/index.less +7 -1
  6. package/Navbar/styles/index.less +6 -1
  7. package/Sidenav/styles/index.less +52 -16
  8. package/Table/styles/index.less +0 -2
  9. package/Tooltip/styles/index.less +4 -4
  10. package/cjs/@types/common.d.ts +6 -0
  11. package/cjs/Cascader/DropdownMenu.js +8 -3
  12. package/cjs/Cascader/utils.d.ts +1 -1
  13. package/cjs/Col/Col.d.ts +25 -5
  14. package/cjs/Col/Col.js +9 -1
  15. package/cjs/CustomProvider/CustomProvider.d.ts +20 -7
  16. package/cjs/CustomProvider/CustomProvider.js +24 -3
  17. package/cjs/Disclosure/Disclosure.d.ts +1 -1
  18. package/cjs/Disclosure/DisclosureContext.d.ts +1 -1
  19. package/cjs/Dropdown/Dropdown.js +26 -110
  20. package/cjs/Dropdown/DropdownItem.js +14 -58
  21. package/cjs/Dropdown/DropdownMenu.js +32 -76
  22. package/cjs/Dropdown/DropdownToggle.js +4 -17
  23. package/cjs/Dropdown/useRenderDropdownItem.d.ts +1 -1
  24. package/cjs/Form/Form.d.ts +8 -8
  25. package/cjs/Form/test/Form.test.d.ts +1 -0
  26. package/cjs/Form/test/Form.test.js +18 -0
  27. package/cjs/Menu/Menu.d.ts +1 -0
  28. package/cjs/Menu/Menu.js +1 -0
  29. package/cjs/Menu/MenuItem.d.ts +1 -0
  30. package/cjs/Menu/MenuItem.js +1 -0
  31. package/cjs/Menu/Menubar.d.ts +3 -0
  32. package/cjs/Menu/Menubar.js +4 -0
  33. package/cjs/Modal/test/Modal.test.d.ts +1 -0
  34. package/cjs/Modal/test/Modal.test.js +14 -0
  35. package/cjs/Modal/utils.d.ts +1 -1
  36. package/cjs/Nav/Nav.d.ts +7 -2
  37. package/cjs/Nav/Nav.js +105 -5
  38. package/cjs/Nav/NavContext.d.ts +2 -8
  39. package/cjs/Nav/NavContext.js +1 -7
  40. package/cjs/Nav/NavDropdown.d.ts +71 -0
  41. package/cjs/Nav/NavDropdown.js +193 -0
  42. package/cjs/Nav/NavDropdownItem.d.ts +39 -0
  43. package/cjs/Nav/NavDropdownItem.js +141 -0
  44. package/cjs/Nav/NavDropdownMenu.d.ts +37 -0
  45. package/cjs/Nav/NavDropdownMenu.js +162 -0
  46. package/cjs/Nav/NavDropdownToggle.d.ts +21 -0
  47. package/cjs/Nav/NavDropdownToggle.js +74 -0
  48. package/cjs/Nav/NavItem.d.ts +2 -0
  49. package/cjs/Nav/NavItem.js +13 -26
  50. package/cjs/Nav/NavMenu.d.ts +38 -0
  51. package/cjs/Nav/NavMenu.js +122 -0
  52. package/cjs/Nav/test/Nav.test.d.ts +1 -0
  53. package/cjs/Nav/test/Nav.test.js +17 -0
  54. package/cjs/Navbar/NavbarDropdown.d.ts +57 -0
  55. package/cjs/Navbar/NavbarDropdown.js +147 -0
  56. package/cjs/Navbar/NavbarDropdownItem.d.ts +41 -0
  57. package/cjs/Navbar/NavbarDropdownItem.js +149 -0
  58. package/cjs/Navbar/NavbarDropdownMenu.d.ts +48 -0
  59. package/cjs/Navbar/NavbarDropdownMenu.js +161 -0
  60. package/cjs/Navbar/NavbarDropdownToggle.d.ts +19 -0
  61. package/cjs/Navbar/NavbarDropdownToggle.js +72 -0
  62. package/cjs/Navbar/NavbarItem.d.ts +5 -2
  63. package/cjs/Navbar/NavbarItem.js +10 -4
  64. package/cjs/Overlay/Modal.d.ts +1 -4
  65. package/cjs/Overlay/Overlay.d.ts +3 -1
  66. package/cjs/Overlay/Overlay.js +6 -2
  67. package/cjs/Overlay/OverlayTrigger.d.ts +8 -4
  68. package/cjs/Overlay/OverlayTrigger.js +32 -4
  69. package/cjs/Overlay/Position.d.ts +3 -1
  70. package/cjs/Overlay/Position.js +12 -4
  71. package/cjs/Overlay/positionUtils.d.ts +11 -4
  72. package/cjs/Overlay/positionUtils.js +48 -2
  73. package/cjs/Panel/Panel.js +9 -6
  74. package/cjs/Picker/utils.d.ts +1 -1
  75. package/cjs/Picker/utils.js +22 -15
  76. package/cjs/Popover/Popover.d.ts +2 -0
  77. package/cjs/Popover/Popover.js +6 -3
  78. package/cjs/Sidenav/ExpandedSidenavDropdown.d.ts +43 -0
  79. package/cjs/Sidenav/ExpandedSidenavDropdown.js +166 -0
  80. package/cjs/Sidenav/ExpandedSidenavDropdownItem.d.ts +31 -0
  81. package/cjs/Sidenav/ExpandedSidenavDropdownItem.js +141 -0
  82. package/cjs/Sidenav/ExpandedSidenavDropdownMenu.d.ts +26 -0
  83. package/cjs/Sidenav/ExpandedSidenavDropdownMenu.js +145 -0
  84. package/cjs/Sidenav/Sidenav.d.ts +8 -2
  85. package/cjs/Sidenav/Sidenav.js +1 -2
  86. package/cjs/Sidenav/SidenavDropdown.d.ts +30 -8
  87. package/cjs/Sidenav/SidenavDropdown.js +144 -73
  88. package/cjs/Sidenav/SidenavDropdownItem.d.ts +22 -5
  89. package/cjs/Sidenav/SidenavDropdownItem.js +88 -72
  90. package/cjs/Sidenav/SidenavDropdownMenu.d.ts +26 -16
  91. package/cjs/Sidenav/SidenavDropdownMenu.js +122 -90
  92. package/cjs/Sidenav/SidenavDropdownToggle.d.ts +19 -0
  93. package/cjs/Sidenav/SidenavDropdownToggle.js +73 -0
  94. package/cjs/Sidenav/SidenavItem.d.ts +7 -0
  95. package/cjs/Sidenav/SidenavItem.js +54 -37
  96. package/cjs/Sidenav/SidenavToggle.d.ts +5 -1
  97. package/cjs/Sidenav/SidenavToggle.js +25 -9
  98. package/cjs/Toggle/Toggle.d.ts +1 -1
  99. package/cjs/Tooltip/Tooltip.d.ts +3 -1
  100. package/cjs/Tooltip/Tooltip.js +8 -3
  101. package/cjs/Whisper/Whisper.d.ts +3 -5
  102. package/cjs/Whisper/Whisper.js +6 -1
  103. package/cjs/Whisper/test/Whisper.test.d.ts +1 -0
  104. package/cjs/Whisper/test/Whisper.test.js +23 -0
  105. package/cjs/index.d.ts +3 -3
  106. package/cjs/index.js +3 -2
  107. package/cjs/toaster/ToastContainer.d.ts +1 -0
  108. package/cjs/toaster/ToastContainer.js +4 -1
  109. package/cjs/toaster/index.d.ts +1 -0
  110. package/cjs/toaster/index.js +4 -1
  111. package/cjs/toaster/toaster.d.ts +0 -1
  112. package/cjs/toaster/useToaster.d.ts +12 -0
  113. package/cjs/toaster/useToaster.js +43 -0
  114. package/cjs/utils/constants.d.ts +1 -0
  115. package/cjs/utils/constants.js +3 -1
  116. package/cjs/utils/deprecateComponent.js +4 -6
  117. package/cjs/utils/deprecatePropType.d.ts +1 -5
  118. package/cjs/utils/deprecatePropType.js +7 -14
  119. package/cjs/utils/stringToObject.d.ts +1 -1
  120. package/cjs/utils/tplTransform.d.ts +1 -1
  121. package/cjs/utils/treeUtils.d.ts +3 -3
  122. package/cjs/utils/treeUtils.js +8 -10
  123. package/cjs/utils/useCustom.d.ts +1 -1
  124. package/cjs/utils/useCustom.js +5 -3
  125. package/cjs/utils/useFocus.d.ts +1 -1
  126. package/cjs/utils/useInternalId.d.ts +1 -1
  127. package/cjs/utils/useInternalId.js +2 -2
  128. package/cjs/utils/warnOnce.d.ts +9 -0
  129. package/cjs/utils/warnOnce.js +22 -0
  130. package/dist/rsuite-rtl.css +735 -56
  131. package/dist/rsuite-rtl.min.css +1 -1
  132. package/dist/rsuite-rtl.min.css.map +1 -1
  133. package/dist/rsuite.css +735 -56
  134. package/dist/rsuite.js +363 -121
  135. package/dist/rsuite.js.map +1 -1
  136. package/dist/rsuite.min.css +1 -1
  137. package/dist/rsuite.min.css.map +1 -1
  138. package/dist/rsuite.min.js +1 -1
  139. package/dist/rsuite.min.js.map +1 -1
  140. package/esm/@types/common.d.ts +6 -0
  141. package/esm/Cascader/DropdownMenu.js +8 -3
  142. package/esm/Cascader/utils.d.ts +1 -1
  143. package/esm/Col/Col.d.ts +25 -5
  144. package/esm/Col/Col.js +10 -2
  145. package/esm/CustomProvider/CustomProvider.d.ts +20 -7
  146. package/esm/CustomProvider/CustomProvider.js +22 -3
  147. package/esm/Disclosure/Disclosure.d.ts +1 -1
  148. package/esm/Disclosure/DisclosureContext.d.ts +1 -1
  149. package/esm/Dropdown/Dropdown.js +25 -105
  150. package/esm/Dropdown/DropdownItem.js +13 -55
  151. package/esm/Dropdown/DropdownMenu.js +31 -76
  152. package/esm/Dropdown/DropdownToggle.js +4 -14
  153. package/esm/Dropdown/useRenderDropdownItem.d.ts +1 -1
  154. package/esm/Form/Form.d.ts +8 -8
  155. package/esm/Form/test/Form.test.d.ts +1 -0
  156. package/esm/Form/test/Form.test.js +11 -0
  157. package/esm/Menu/Menu.d.ts +1 -0
  158. package/esm/Menu/Menu.js +1 -0
  159. package/esm/Menu/MenuItem.d.ts +1 -0
  160. package/esm/Menu/MenuItem.js +1 -0
  161. package/esm/Menu/Menubar.d.ts +3 -0
  162. package/esm/Menu/Menubar.js +4 -0
  163. package/esm/Modal/test/Modal.test.d.ts +1 -0
  164. package/esm/Modal/test/Modal.test.js +9 -0
  165. package/esm/Modal/utils.d.ts +1 -1
  166. package/esm/Nav/Nav.d.ts +7 -2
  167. package/esm/Nav/Nav.js +96 -5
  168. package/esm/Nav/NavContext.d.ts +2 -8
  169. package/esm/Nav/NavContext.js +1 -6
  170. package/esm/Nav/NavDropdown.d.ts +71 -0
  171. package/esm/Nav/NavDropdown.js +170 -0
  172. package/esm/Nav/NavDropdownItem.d.ts +39 -0
  173. package/esm/Nav/NavDropdownItem.js +123 -0
  174. package/esm/Nav/NavDropdownMenu.d.ts +37 -0
  175. package/esm/Nav/NavDropdownMenu.js +143 -0
  176. package/esm/Nav/NavDropdownToggle.d.ts +21 -0
  177. package/esm/Nav/NavDropdownToggle.js +57 -0
  178. package/esm/Nav/NavItem.d.ts +2 -0
  179. package/esm/Nav/NavItem.js +13 -21
  180. package/esm/Nav/NavMenu.d.ts +38 -0
  181. package/esm/Nav/NavMenu.js +98 -0
  182. package/esm/Nav/test/Nav.test.d.ts +1 -0
  183. package/esm/Nav/test/Nav.test.js +11 -0
  184. package/esm/Navbar/NavbarDropdown.d.ts +57 -0
  185. package/esm/Navbar/NavbarDropdown.js +124 -0
  186. package/esm/Navbar/NavbarDropdownItem.d.ts +41 -0
  187. package/esm/Navbar/NavbarDropdownItem.js +128 -0
  188. package/esm/Navbar/NavbarDropdownMenu.d.ts +48 -0
  189. package/esm/Navbar/NavbarDropdownMenu.js +140 -0
  190. package/esm/Navbar/NavbarDropdownToggle.d.ts +19 -0
  191. package/esm/Navbar/NavbarDropdownToggle.js +55 -0
  192. package/esm/Navbar/NavbarItem.d.ts +5 -2
  193. package/esm/Navbar/NavbarItem.js +11 -4
  194. package/esm/Overlay/Modal.d.ts +1 -4
  195. package/esm/Overlay/Overlay.d.ts +3 -1
  196. package/esm/Overlay/Overlay.js +6 -2
  197. package/esm/Overlay/OverlayTrigger.d.ts +8 -4
  198. package/esm/Overlay/OverlayTrigger.js +33 -5
  199. package/esm/Overlay/Position.d.ts +3 -1
  200. package/esm/Overlay/Position.js +12 -4
  201. package/esm/Overlay/positionUtils.d.ts +11 -4
  202. package/esm/Overlay/positionUtils.js +46 -2
  203. package/esm/Panel/Panel.js +9 -6
  204. package/esm/Picker/utils.d.ts +1 -1
  205. package/esm/Picker/utils.js +22 -14
  206. package/esm/Popover/Popover.d.ts +2 -0
  207. package/esm/Popover/Popover.js +6 -3
  208. package/esm/Sidenav/ExpandedSidenavDropdown.d.ts +43 -0
  209. package/esm/Sidenav/ExpandedSidenavDropdown.js +140 -0
  210. package/esm/Sidenav/ExpandedSidenavDropdownItem.d.ts +31 -0
  211. package/esm/Sidenav/ExpandedSidenavDropdownItem.js +120 -0
  212. package/esm/Sidenav/ExpandedSidenavDropdownMenu.d.ts +26 -0
  213. package/esm/Sidenav/ExpandedSidenavDropdownMenu.js +121 -0
  214. package/esm/Sidenav/Sidenav.d.ts +8 -2
  215. package/esm/Sidenav/Sidenav.js +1 -2
  216. package/esm/Sidenav/SidenavDropdown.d.ts +30 -8
  217. package/esm/Sidenav/SidenavDropdown.js +145 -75
  218. package/esm/Sidenav/SidenavDropdownItem.d.ts +22 -5
  219. package/esm/Sidenav/SidenavDropdownItem.js +87 -71
  220. package/esm/Sidenav/SidenavDropdownMenu.d.ts +26 -16
  221. package/esm/Sidenav/SidenavDropdownMenu.js +122 -86
  222. package/esm/Sidenav/SidenavDropdownToggle.d.ts +19 -0
  223. package/esm/Sidenav/SidenavDropdownToggle.js +56 -0
  224. package/esm/Sidenav/SidenavItem.d.ts +7 -0
  225. package/esm/Sidenav/SidenavItem.js +53 -38
  226. package/esm/Sidenav/SidenavToggle.d.ts +5 -1
  227. package/esm/Sidenav/SidenavToggle.js +22 -9
  228. package/esm/Toggle/Toggle.d.ts +1 -1
  229. package/esm/Tooltip/Tooltip.d.ts +3 -1
  230. package/esm/Tooltip/Tooltip.js +8 -3
  231. package/esm/Whisper/Whisper.d.ts +3 -5
  232. package/esm/Whisper/Whisper.js +6 -1
  233. package/esm/Whisper/test/Whisper.test.d.ts +1 -0
  234. package/esm/Whisper/test/Whisper.test.js +16 -0
  235. package/esm/index.d.ts +3 -3
  236. package/esm/index.js +1 -1
  237. package/esm/toaster/ToastContainer.d.ts +1 -0
  238. package/esm/toaster/ToastContainer.js +1 -0
  239. package/esm/toaster/index.d.ts +1 -0
  240. package/esm/toaster/index.js +1 -0
  241. package/esm/toaster/toaster.d.ts +0 -1
  242. package/esm/toaster/useToaster.d.ts +12 -0
  243. package/esm/toaster/useToaster.js +34 -0
  244. package/esm/utils/constants.d.ts +1 -0
  245. package/esm/utils/constants.js +1 -0
  246. package/esm/utils/deprecateComponent.js +3 -4
  247. package/esm/utils/deprecatePropType.d.ts +1 -5
  248. package/esm/utils/deprecatePropType.js +3 -13
  249. package/esm/utils/stringToObject.d.ts +1 -1
  250. package/esm/utils/tplTransform.d.ts +1 -1
  251. package/esm/utils/treeUtils.d.ts +3 -3
  252. package/esm/utils/treeUtils.js +8 -10
  253. package/esm/utils/useCustom.d.ts +1 -1
  254. package/esm/utils/useCustom.js +5 -3
  255. package/esm/utils/useFocus.d.ts +1 -1
  256. package/esm/utils/useInternalId.d.ts +1 -1
  257. package/esm/utils/useInternalId.js +2 -2
  258. package/esm/utils/warnOnce.d.ts +9 -0
  259. package/esm/utils/warnOnce.js +18 -0
  260. package/package.json +1 -1
  261. package/styles/color-modes/dark.less +3 -0
  262. package/styles/color-modes/high-contrast.less +3 -0
  263. package/styles/color-modes/light.less +5 -2
  264. package/styles/variables.less +33 -12
@@ -1,121 +1,157 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
1
  import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
4
 
5
5
  var _templateObject, _templateObject2;
6
6
 
7
7
  import React, { useCallback, useContext } from 'react';
8
- import isNil from 'lodash/isNil';
9
8
  import omit from 'lodash/omit';
10
- import { createChainedFunction, useClassNames } from '../utils';
9
+ import Menu from '../Menu/Menu';
10
+ import MenuItem from '../Menu/MenuItem';
11
+ import { mergeRefs, useClassNames } from '../utils';
12
+ import PropTypes from 'prop-types';
11
13
  import { SidenavContext } from './Sidenav';
14
+ import ArrowLeftLine from '@rsuite/icons/ArrowLeftLine';
15
+ import ArrowRightLine from '@rsuite/icons/ArrowRightLine';
12
16
  import useCustom from '../utils/useCustom';
13
- import AngleLeft from '@rsuite/icons/legacy/AngleLeft';
14
- import AngleRight from '@rsuite/icons/legacy/AngleRight';
15
- import PropTypes from 'prop-types';
16
- import SidenavDropdownCollapse from './SidenavDropdownCollapse';
17
- import Ripple from '../Ripple';
18
- import Disclosure from '../Disclosure/Disclosure';
17
+ import ExpandedSidenavDropdownMenu from './ExpandedSidenavDropdownMenu';
18
+ import NavContext from '../Nav/NavContext';
19
19
 
20
20
  /**
21
- * Tree View Node
22
- * @see https://www.w3.org/TR/wai-aria-practices-1.2/#TreeView
21
+ * @private this component is not supposed to be used directly
22
+ * Instead it's rendered by a <Nav.Menu> within a <Sidenav>
23
+ *
24
+ * <Sidenav>
25
+ * <Nav>
26
+ * <Nav.Menu>
27
+ * <Nav.Menu></Nav.Menu> -> This submenu will render <SidenavDropdownMenu> component
28
+ * </Nav.Menu>
29
+ * </Nav>
30
+ * </Sidenav>
23
31
  */
24
32
  var SidenavDropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
25
- var _props$as = props.as,
26
- Component = _props$as === void 0 ? 'li' : _props$as,
27
- children = props.children,
28
- disabled = props.disabled,
29
- className = props.className,
30
- style = props.style,
31
- _props$classPrefix = props.classPrefix,
32
- classPrefix = _props$classPrefix === void 0 ? 'dropdown-item' : _props$classPrefix,
33
- tabIndex = props.tabIndex,
34
- icon = props.icon,
35
- title = props.title,
33
+ var sidenav = useContext(SidenavContext);
34
+ var nav = useContext(NavContext);
35
+
36
+ if (!sidenav || !nav) {
37
+ throw new Error('<Sidenav.Dropdown.Menu> must be rendered within a <Nav> within a <Sidenav> component.');
38
+ }
39
+
40
+ var onToggle = props.onToggle,
36
41
  eventKey = props.eventKey,
37
- onClick = props.onClick,
38
- onSelect = props.onSelect,
39
- rest = _objectWithoutPropertiesLoose(props, ["as", "children", "disabled", "className", "style", "classPrefix", "tabIndex", "icon", "title", "eventKey", "onClick", "onSelect"]);
42
+ title = props.title,
43
+ _props$classPrefix = props.classPrefix,
44
+ classPrefix = _props$classPrefix === void 0 ? 'dropdown-menu' : _props$classPrefix,
45
+ children = props.children,
46
+ rest = _objectWithoutPropertiesLoose(props, ["onToggle", "eventKey", "title", "classPrefix", "children"]);
40
47
 
41
48
  var _useCustom = useCustom('DropdownMenu'),
42
49
  rtl = _useCustom.rtl;
43
50
 
51
+ var handleToggleSubmenu = useCallback(function (open, event) {
52
+ onToggle === null || onToggle === void 0 ? void 0 : onToggle(open, eventKey, event);
53
+ }, [eventKey, onToggle]);
54
+
44
55
  var _useClassNames = useClassNames(classPrefix),
45
- merge = _useClassNames.merge,
46
- withClassPrefix = _useClassNames.withClassPrefix,
47
56
  prefix = _useClassNames.prefix;
48
57
 
49
- var sidenavContext = useContext(SidenavContext);
58
+ var _useClassNames2 = useClassNames('dropdown-menu'),
59
+ withMenuClassPrefix = _useClassNames2.withClassPrefix,
60
+ mergeMenuClassName = _useClassNames2.merge;
50
61
 
51
- if (!sidenavContext) {
52
- throw new Error('<SidenavDropdownMenu> component is not supposed to be used standalone. Use <Dropdown.Item> inside <Sidenav> instead.');
53
- }
62
+ var _useClassNames3 = useClassNames('dropdown-item'),
63
+ mergeItemClassNames = _useClassNames3.merge,
64
+ withItemClassPrefix = _useClassNames3.withClassPrefix,
65
+ prefixItemClassName = _useClassNames3.prefix;
54
66
 
55
- var _sidenavContext$openK = sidenavContext.openKeys,
56
- openKeys = _sidenavContext$openK === void 0 ? [] : _sidenavContext$openK,
57
- onOpenChange = sidenavContext.onOpenChange,
58
- onSidenavSelect = sidenavContext.onSelect;
59
- var handleClick = useCallback(function (event) {
60
- if (disabled) return;
61
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(eventKey, event);
62
- onSidenavSelect === null || onSidenavSelect === void 0 ? void 0 : onSidenavSelect(eventKey, event);
63
- }, [disabled, onSelect, onSidenavSelect, eventKey]);
64
- var menuitemEventHandlers = {
65
- onClick: createChainedFunction(handleClick, onClick)
66
- };
67
- var Icon = rtl ? AngleLeft : AngleRight;
68
- return /*#__PURE__*/React.createElement(Disclosure, {
69
- open: !isNil(eventKey) && openKeys.includes(eventKey),
70
- onToggle: function onToggle(_, event) {
71
- return onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(eventKey, event);
72
- }
73
- }, function (_ref) {
74
- var open = _ref.open;
75
- var classes = merge(className, prefix('submenu'), prefix("pull-" + (rtl ? 'left' : 'right')), prefix(open ? 'expand' : 'collapse'), withClassPrefix({
76
- 'with-icon': icon,
77
- // open,
78
- disabled: disabled
79
- }));
80
- return /*#__PURE__*/React.createElement(Component, _extends({
67
+ if (sidenav.expanded) {
68
+ return /*#__PURE__*/React.createElement(ExpandedSidenavDropdownMenu, _extends({
81
69
  ref: ref
82
- }, rest, {
83
- tabIndex: disabled ? -1 : tabIndex,
84
- style: style,
85
- className: classes
86
- }, menuitemEventHandlers), /*#__PURE__*/React.createElement(Disclosure.Button, null, function (buttonProps) {
87
- return /*#__PURE__*/React.createElement("button", _extends({
88
- className: prefix(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["toggle"]))),
89
- onClick: handleClick
90
- }, omit(buttonProps, ['open'])), icon && /*#__PURE__*/React.cloneElement(icon, {
91
- className: prefix('menu-icon')
92
- }), title, /*#__PURE__*/React.createElement(Icon, {
93
- className: prefix(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["toggle-icon"])))
94
- }), /*#__PURE__*/React.createElement(Ripple, null));
95
- }), /*#__PURE__*/React.createElement(Disclosure.Content, null, function (_ref2) {
96
- var open = _ref2.open;
97
- return /*#__PURE__*/React.createElement(SidenavDropdownCollapse, {
98
- open: open
99
- }, children);
70
+ }, omit(props, 'classPrefix')));
71
+ } // Parent menu exists. This is a submenu.
72
+ // Should render a `menuitem` that controls this submenu.
73
+
74
+
75
+ var _omit = omit(rest, ['trigger']),
76
+ icon = _omit.icon,
77
+ className = _omit.className,
78
+ disabled = _omit.disabled,
79
+ menuProps = _objectWithoutPropertiesLoose(_omit, ["icon", "className", "disabled"]);
80
+
81
+ var Icon = rtl ? ArrowLeftLine : ArrowRightLine;
82
+ return /*#__PURE__*/React.createElement(Menu, {
83
+ openMenuOn: ['mouseover', 'click'],
84
+ renderMenuButton: function renderMenuButton(_ref, buttonRef) {
85
+ var open = _ref.open,
86
+ menuButtonProps = _objectWithoutPropertiesLoose(_ref, ["open"]);
87
+
88
+ return /*#__PURE__*/React.createElement(MenuItem, {
89
+ disabled: disabled
90
+ }, function (_ref2, menuitemRef) {
91
+ var selected = _ref2.selected,
92
+ active = _ref2.active,
93
+ menuitem = _objectWithoutPropertiesLoose(_ref2, ["selected", "active"]);
94
+
95
+ var classes = mergeItemClassNames(className, prefixItemClassName(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["toggle"]))), withItemClassPrefix({
96
+ 'with-icon': icon,
97
+ open: open,
98
+ active: selected,
99
+ disabled: disabled,
100
+ focus: active
101
+ }));
102
+ return /*#__PURE__*/React.createElement("div", _extends({
103
+ ref: mergeRefs(buttonRef, menuitemRef),
104
+ className: classes,
105
+ "data-event-key": eventKey,
106
+ "data-event-key-type": typeof eventKey
107
+ }, menuitem, omit(menuButtonProps, ['role'])), icon && /*#__PURE__*/React.cloneElement(icon, {
108
+ className: prefix('menu-icon')
109
+ }), title, /*#__PURE__*/React.createElement(Icon, {
110
+ className: prefix(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["toggle-icon"])))
111
+ }));
112
+ });
113
+ },
114
+ renderMenuPopup: function renderMenuPopup(_ref3, popupRef) {
115
+ var open = _ref3.open,
116
+ popupProps = _objectWithoutPropertiesLoose(_ref3, ["open"]);
117
+
118
+ var menuClassName = mergeMenuClassName(className, withMenuClassPrefix());
119
+ return /*#__PURE__*/React.createElement("ul", _extends({
120
+ ref: popupRef,
121
+ className: menuClassName,
122
+ hidden: !open
123
+ }, popupProps, menuProps), children);
124
+ },
125
+ onToggleMenu: handleToggleSubmenu
126
+ }, function (_ref4, menuContainerRef) {
127
+ var open = _ref4.open,
128
+ menuContainer = _objectWithoutPropertiesLoose(_ref4, ["open"]);
129
+
130
+ var classes = mergeItemClassNames(className, withItemClassPrefix({
131
+ disabled: disabled,
132
+ open: open,
133
+ submenu: true
100
134
  }));
135
+ return /*#__PURE__*/React.createElement("li", _extends({
136
+ ref: mergeRefs(ref, menuContainerRef),
137
+ className: classes
138
+ }, menuContainer));
101
139
  });
102
140
  });
103
141
  SidenavDropdownMenu.displayName = 'Sidenav.Dropdown.Menu';
104
142
  SidenavDropdownMenu.propTypes = {
105
- as: PropTypes.elementType,
106
- expanded: PropTypes.bool,
107
- disabled: PropTypes.bool,
108
- onSelect: PropTypes.func,
109
- onClick: PropTypes.func,
110
- icon: PropTypes.node,
111
- eventKey: PropTypes.any,
143
+ active: PropTypes.bool,
144
+ activeKey: PropTypes.any,
112
145
  className: PropTypes.string,
113
- style: PropTypes.object,
114
146
  children: PropTypes.node,
147
+ icon: PropTypes.any,
115
148
  classPrefix: PropTypes.string,
116
- tabIndex: PropTypes.number,
149
+ pullLeft: PropTypes.bool,
117
150
  title: PropTypes.node,
118
- onMouseOver: PropTypes.func,
119
- onMouseOut: PropTypes.func
151
+ open: PropTypes.bool,
152
+ eventKey: PropTypes.any,
153
+ expanded: PropTypes.bool,
154
+ collapsible: PropTypes.bool,
155
+ onToggle: PropTypes.func
120
156
  };
121
157
  export default SidenavDropdownMenu;
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import Button from '../Button';
3
+ import { WithAsProps, RsRefForwardingComponent, TypeAttributes } from '../@types/common';
4
+ export interface SidenavDropdownToggleProps extends WithAsProps {
5
+ noCaret?: boolean;
6
+ renderToggle?: (props: WithAsProps, ref: React.Ref<any>) => any;
7
+ placement?: TypeAttributes.Placement8;
8
+ }
9
+ /**
10
+ * @private this component is not supposed to be used directly
11
+ * Instead it's rendered by a <Nav.Menu> call
12
+ *
13
+ * <Nav>
14
+ * <Nav.Menu> -> This will render <NavDropdown> component that renders a <NavDropdownToggle>
15
+ * </Nav.Menu>
16
+ * </Nav>
17
+ */
18
+ declare const SidenavDropdownToggle: RsRefForwardingComponent<typeof Button, SidenavDropdownToggleProps>;
19
+ export default SidenavDropdownToggle;
@@ -0,0 +1,56 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ import React from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import ArrowDownLineIcon from '@rsuite/icons/ArrowDownLine';
6
+ import { useClassNames } from '../utils';
7
+ import SidenavItem from './SidenavItem';
8
+
9
+ /**
10
+ * @private this component is not supposed to be used directly
11
+ * Instead it's rendered by a <Nav.Menu> call
12
+ *
13
+ * <Nav>
14
+ * <Nav.Menu> -> This will render <NavDropdown> component that renders a <NavDropdownToggle>
15
+ * </Nav.Menu>
16
+ * </Nav>
17
+ */
18
+ var SidenavDropdownToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
19
+ var _props$as = props.as,
20
+ Component = _props$as === void 0 ? SidenavItem : _props$as,
21
+ className = props.className,
22
+ _props$classPrefix = props.classPrefix,
23
+ classPrefix = _props$classPrefix === void 0 ? 'dropdown-toggle' : _props$classPrefix,
24
+ renderToggle = props.renderToggle,
25
+ children = props.children,
26
+ noCaret = props.noCaret,
27
+ rest = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "renderToggle", "children", "noCaret"]);
28
+
29
+ var _useClassNames = useClassNames(classPrefix),
30
+ prefix = _useClassNames.prefix,
31
+ withClassPrefix = _useClassNames.withClassPrefix,
32
+ merge = _useClassNames.merge;
33
+
34
+ var classes = merge(className, withClassPrefix({
35
+ 'no-caret': noCaret
36
+ }));
37
+ var toggle = /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
38
+ ref: ref,
39
+ className: classes,
40
+ tooltip: children
41
+ }), children, !noCaret && /*#__PURE__*/React.createElement(ArrowDownLineIcon, {
42
+ className: prefix('caret')
43
+ }));
44
+ return renderToggle ? renderToggle(rest, ref) : toggle;
45
+ });
46
+ SidenavDropdownToggle.displayName = 'Sidenav.Dropdown.Toggle';
47
+ SidenavDropdownToggle.propTypes = {
48
+ className: PropTypes.string,
49
+ children: PropTypes.node,
50
+ classPrefix: PropTypes.string,
51
+ noCaret: PropTypes.bool,
52
+ as: PropTypes.elementType,
53
+ renderToggle: PropTypes.func,
54
+ placement: PropTypes.oneOf(['bottomStart', 'bottomEnd', 'topStart', 'topEnd', 'leftStart', 'rightStart', 'leftEnd', 'rightEnd'])
55
+ };
56
+ export default SidenavDropdownToggle;
@@ -14,6 +14,13 @@ export interface SidenavItemProps<T = any> extends WithAsProps, Omit<React.HTMLA
14
14
  onSelect?: (eventKey: T, event: React.MouseEvent) => void;
15
15
  divider?: boolean;
16
16
  panel?: boolean;
17
+ /**
18
+ * Content of the tooltip
19
+ */
20
+ tooltip?: React.ReactNode;
17
21
  }
22
+ /**
23
+ * @private
24
+ */
18
25
  declare const SidenavItem: RsRefForwardingComponent<'li', SidenavItemProps>;
19
26
  export default SidenavItem;
@@ -3,18 +3,30 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
3
3
  import React, { useContext, useCallback } from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import isNil from 'lodash/isNil';
6
- import { useClassNames, shallowEqual, mergeRefs, appendTooltip } from '../utils';
6
+ import { useClassNames, shallowEqual, mergeRefs, createChainedFunction } from '../utils';
7
7
  import Ripple from '../Ripple';
8
8
  import SafeAnchor from '../SafeAnchor';
9
9
  import NavContext from '../Nav/NavContext';
10
10
  import MenuItem from '../Menu/MenuItem';
11
11
  import omit from 'lodash/omit';
12
12
  import { SidenavContext } from './Sidenav';
13
+ import Whisper from '../Whisper';
14
+ import Tooltip from '../Tooltip';
15
+
16
+ /**
17
+ * @private
18
+ */
13
19
  var SidenavItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
20
+ var sidenav = useContext(SidenavContext);
21
+
22
+ if (!sidenav) {
23
+ throw new Error('<SidenavItem> component is not supposed to be used standalone. Use <Nav.Item> inside <Sidenav> instead.');
24
+ }
25
+
14
26
  var _props$as = props.as,
15
27
  Component = _props$as === void 0 ? SafeAnchor : _props$as,
16
28
  activeProp = props.active,
17
- _children = props.children,
29
+ children = props.children,
18
30
  className = props.className,
19
31
  disabled = props.disabled,
20
32
  _props$classPrefix = props.classPrefix,
@@ -26,17 +38,13 @@ var SidenavItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
26
38
  onSelect = props.onSelect,
27
39
  divider = props.divider,
28
40
  panel = props.panel,
29
- rest = _objectWithoutPropertiesLoose(props, ["as", "active", "children", "className", "disabled", "classPrefix", "icon", "eventKey", "style", "onClick", "onSelect", "divider", "panel"]);
30
-
31
- var sidenav = useContext(SidenavContext);
32
-
33
- if (!sidenav) {
34
- throw new Error('<SidenavItem> component is not supposed to be used standalone. Use <Nav.Item> inside <Sidenav> instead.');
35
- }
41
+ _props$tooltip = props.tooltip,
42
+ tooltip = _props$tooltip === void 0 ? children : _props$tooltip,
43
+ rest = _objectWithoutPropertiesLoose(props, ["as", "active", "children", "className", "disabled", "classPrefix", "icon", "eventKey", "style", "onClick", "onSelect", "divider", "panel", "tooltip"]);
36
44
 
37
- var _useContext = useContext(NavContext),
38
- activeKey = _useContext.activeKey,
39
- onSelectFromNav = _useContext.onSelect;
45
+ var _ref = useContext(NavContext),
46
+ activeKey = _ref.activeKey,
47
+ onSelectFromNav = _ref.onSelect;
40
48
 
41
49
  var _useClassNames = useClassNames(classPrefix),
42
50
  merge = _useClassNames.merge,
@@ -52,32 +60,37 @@ var SidenavItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
52
60
  }, [disabled, onSelect, onSelectFromNav, eventKey, onClick]);
53
61
 
54
62
  if (!sidenav.expanded) {
55
- return /*#__PURE__*/React.createElement(MenuItem, {
56
- selected: selected,
57
- disabled: disabled,
58
- onActivate: handleClick
59
- }, function (_ref, menuitemRef) {
60
- var selected = _ref.selected,
61
- active = _ref.active,
62
- menuitem = _objectWithoutPropertiesLoose(_ref, ["selected", "active"]);
63
+ return /*#__PURE__*/React.createElement(Whisper, {
64
+ trigger: "hover",
65
+ speaker: /*#__PURE__*/React.createElement(Tooltip, null, tooltip),
66
+ placement: "right"
67
+ }, function (triggerProps, triggerRef) {
68
+ return /*#__PURE__*/React.createElement(MenuItem, {
69
+ selected: selected,
70
+ disabled: disabled,
71
+ onActivate: handleClick
72
+ }, function (_ref2, menuitemRef) {
73
+ var selected = _ref2.selected,
74
+ active = _ref2.active,
75
+ menuitem = _objectWithoutPropertiesLoose(_ref2, ["selected", "active"]);
63
76
 
64
- var classes = merge(className, withClassPrefix({
65
- focus: active,
66
- active: selected,
67
- disabled: disabled
68
- })); // Show tooltip when inside a collapse <Sidenav>
77
+ var classes = merge(className, withClassPrefix({
78
+ focus: active,
79
+ active: selected,
80
+ disabled: disabled
81
+ })); // Show tooltip when inside a collapse <Sidenav>
69
82
 
70
- return appendTooltip({
71
- children: function children(triggerProps, triggerRef) {
72
- return /*#__PURE__*/React.createElement(Component, _extends({
73
- ref: mergeRefs(mergeRefs(ref, menuitemRef), triggerRef),
74
- disabled: Component === SafeAnchor ? disabled : undefined,
75
- className: classes,
76
- "data-event-key": eventKey
77
- }, omit(rest, ['divider', 'panel']), triggerProps, menuitem), icon, _children, /*#__PURE__*/React.createElement(Ripple, null));
78
- },
79
- message: _children,
80
- placement: 'right'
83
+ return /*#__PURE__*/React.createElement(Component, _extends({
84
+ ref: mergeRefs(mergeRefs(ref, menuitemRef), triggerRef),
85
+ disabled: Component === SafeAnchor ? disabled : undefined,
86
+ className: classes,
87
+ "data-event-key": eventKey
88
+ }, omit(rest, ['divider', 'panel']), triggerProps, menuitem, {
89
+ onMouseOver: createChainedFunction(menuitem.onMouseOver, triggerProps.onMouseOver),
90
+ onMouseOut: createChainedFunction(menuitem.onMouseOut, triggerProps.onMouseOut)
91
+ }), icon && /*#__PURE__*/React.cloneElement(icon, {
92
+ className: prefix('icon')
93
+ }), children, /*#__PURE__*/React.createElement(Ripple, null));
81
94
  });
82
95
  });
83
96
  }
@@ -97,7 +110,7 @@ var SidenavItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
97
110
  role: "none presentation",
98
111
  style: style,
99
112
  className: merge(className, prefix('panel'))
100
- }, rest), _children);
113
+ }, rest), children);
101
114
  }
102
115
 
103
116
  return /*#__PURE__*/React.createElement(Component, _extends({
@@ -110,7 +123,9 @@ var SidenavItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
110
123
  style: style,
111
124
  "aria-selected": selected || undefined,
112
125
  "data-event-key": eventKey
113
- }, rest), icon, _children, /*#__PURE__*/React.createElement(Ripple, null));
126
+ }, rest), icon && /*#__PURE__*/React.cloneElement(icon, {
127
+ className: prefix('icon')
128
+ }), children, /*#__PURE__*/React.createElement(Ripple, null));
114
129
  });
115
130
  SidenavItem.displayName = 'Sidenav.Item';
116
131
  SidenavItem.propTypes = {
@@ -1,7 +1,11 @@
1
1
  import React from 'react';
2
2
  import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
3
3
  export interface SidenavToggleProps extends WithAsProps {
4
- /** Expand then nav */
4
+ /**
5
+ * Expand then nav
6
+ *
7
+ * @deprecated Use <Sidenav expanded> instead.
8
+ */
5
9
  expanded?: boolean;
6
10
  /** Callback function for menu state switching */
7
11
  onToggle?: (expanded: boolean, event: React.MouseEvent) => void;
@@ -1,29 +1,41 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- import React from 'react';
3
+ import React, { useContext } from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import IconButton from '../IconButton';
6
6
  import { useClassNames } from '../utils';
7
7
  import AngleLeft from '@rsuite/icons/legacy/AngleLeft';
8
8
  import AngleRight from '@rsuite/icons/legacy/AngleRight';
9
+ import deprecatePropType from '../utils/deprecatePropType';
10
+ import { SidenavContext } from './Sidenav';
9
11
  var SidenavToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
12
+ var sidenav = useContext(SidenavContext);
13
+
14
+ if (!sidenav) {
15
+ throw new Error('<Sidenav.Toggle> must be rendered within a <Sidenav>');
16
+ }
17
+
10
18
  var _props$as = props.as,
11
19
  Component = _props$as === void 0 ? 'div' : _props$as,
12
- expanded = props.expanded,
20
+ DEPRECATED_expanded = props.expanded,
13
21
  className = props.className,
14
22
  _props$classPrefix = props.classPrefix,
15
23
  classPrefix = _props$classPrefix === void 0 ? 'sidenav-toggle' : _props$classPrefix,
16
24
  onToggle = props.onToggle,
17
- rest = _objectWithoutPropertiesLoose(props, ["as", "expanded", "className", "classPrefix", "onToggle"]);
25
+ rest = _objectWithoutPropertiesLoose(props, ["as", "expanded", "className", "classPrefix", "onToggle"]); // if `expanded` prop is provided, it takes priority
26
+
27
+
28
+ var expanded = DEPRECATED_expanded !== null && DEPRECATED_expanded !== void 0 ? DEPRECATED_expanded : sidenav.expanded;
18
29
 
19
30
  var _useClassNames = useClassNames(classPrefix),
20
31
  merge = _useClassNames.merge,
21
- withClassPrefix = _useClassNames.withClassPrefix;
32
+ withClassPrefix = _useClassNames.withClassPrefix,
33
+ prefix = _useClassNames.prefix;
22
34
 
23
35
  var classes = merge(className, withClassPrefix({
24
36
  collapsed: !expanded
25
37
  }));
26
- var Icon = expanded ? AngleRight : AngleLeft;
38
+ var Icon = expanded ? AngleLeft : AngleRight;
27
39
 
28
40
  var handleToggle = function handleToggle(event) {
29
41
  onToggle === null || onToggle === void 0 ? void 0 : onToggle(!expanded, event);
@@ -33,16 +45,17 @@ var SidenavToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
33
45
  ref: ref,
34
46
  className: classes
35
47
  }), /*#__PURE__*/React.createElement(IconButton, {
36
- appearance: "default",
37
48
  icon: /*#__PURE__*/React.createElement(Icon, null),
38
- onClick: handleToggle
49
+ className: prefix('button'),
50
+ onClick: handleToggle,
51
+ "aria-label": expanded ? 'Collapse' : 'Expand'
39
52
  }));
40
53
  });
41
- SidenavToggle.displayName = 'SidenavToggle';
54
+ SidenavToggle.displayName = 'Sidenav.Toggle';
42
55
  SidenavToggle.propTypes = {
43
56
  classPrefix: PropTypes.string,
44
57
  className: PropTypes.string,
45
- expanded: PropTypes.bool,
58
+ expanded: deprecatePropType(PropTypes.bool, 'Use <Sidenav expanded> instead.'),
46
59
  onToggle: PropTypes.func
47
60
  };
48
61
  export default SidenavToggle;
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { WithAsProps, TypeAttributes, RsRefForwardingComponent } from '../@types/common';
3
3
  import { ToggleLocale } from '../locales';
4
4
  export interface ToggleProps extends WithAsProps {
5
- /** Wheather to disabled toggle */
5
+ /** Whether to disabled toggle */
6
6
  disabled?: boolean;
7
7
  /** Render the control as plain text */
8
8
  plaintext?: boolean;
@@ -3,10 +3,12 @@ import { TypeAttributes, WithAsProps, RsRefForwardingComponent } from '../@types
3
3
  export interface TooltipProps extends WithAsProps {
4
4
  /** Dispaly placement */
5
5
  placement?: TypeAttributes.Placement;
6
- /** Wheather visible */
6
+ /** Whether visible */
7
7
  visible?: boolean;
8
8
  /** Primary content */
9
9
  children?: React.ReactNode;
10
+ /** Whether show the arrow indicator */
11
+ arrow?: boolean;
10
12
  }
11
13
  declare const Tooltip: RsRefForwardingComponent<'div', TooltipProps>;
12
14
  export default Tooltip;
@@ -12,13 +12,17 @@ var Tooltip = /*#__PURE__*/React.forwardRef(function (props, ref) {
12
12
  children = props.children,
13
13
  style = props.style,
14
14
  visible = props.visible,
15
- rest = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "children", "style", "visible"]);
15
+ _props$arrow = props.arrow,
16
+ arrow = _props$arrow === void 0 ? true : _props$arrow,
17
+ rest = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "children", "style", "visible", "arrow"]);
16
18
 
17
19
  var _useClassNames = useClassNames(classPrefix),
18
20
  merge = _useClassNames.merge,
19
21
  withClassPrefix = _useClassNames.withClassPrefix;
20
22
 
21
- var classes = merge(className, withClassPrefix());
23
+ var classes = merge(className, withClassPrefix({
24
+ arrow: arrow
25
+ }));
22
26
 
23
27
  var styles = _extends({
24
28
  opacity: visible ? 1 : undefined
@@ -38,6 +42,7 @@ Tooltip.propTypes = {
38
42
  classPrefix: PropTypes.string,
39
43
  className: PropTypes.string,
40
44
  style: PropTypes.object,
41
- children: PropTypes.node
45
+ children: PropTypes.node,
46
+ arrow: PropTypes.bool
42
47
  };
43
48
  export default Tooltip;
@@ -1,9 +1,7 @@
1
1
  import React from 'react';
2
+ import { OverlayTriggerInstance } from '../Overlay/OverlayTrigger';
2
3
  import { OverlayTriggerProps } from '../Overlay/OverlayTrigger';
3
4
  export declare type WhisperProps = OverlayTriggerProps;
4
- export interface WhisperInstance extends React.Component<WhisperProps> {
5
- open: (delay?: number) => void;
6
- close: (delay?: number) => void;
7
- }
8
- declare const Whisper: React.ForwardRefExoticComponent<OverlayTriggerProps & React.RefAttributes<unknown>>;
5
+ export declare type WhisperInstance = OverlayTriggerInstance;
6
+ declare const Whisper: React.ForwardRefExoticComponent<OverlayTriggerProps & React.RefAttributes<OverlayTriggerInstance>>;
9
7
  export default Whisper;
@@ -36,6 +36,11 @@ Whisper.propTypes = {
36
36
  /**
37
37
  * Prevent floating element overflow
38
38
  */
39
- preventOverflow: PropTypes.bool
39
+ preventOverflow: PropTypes.bool,
40
+
41
+ /**
42
+ * Whether enable speaker follow cursor
43
+ */
44
+ followCursor: PropTypes.bool
40
45
  };
41
46
  export default Whisper;
@@ -0,0 +1 @@
1
+ export {};