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
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
+
7
+ exports.__esModule = true;
8
+ exports.default = void 0;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));
13
+
14
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _isNil = _interopRequireDefault(require("lodash/isNil"));
19
+
20
+ var _omit = _interopRequireDefault(require("lodash/omit"));
21
+
22
+ var _utils = require("../utils");
23
+
24
+ var _Sidenav = require("./Sidenav");
25
+
26
+ var _useCustom2 = _interopRequireDefault(require("../utils/useCustom"));
27
+
28
+ var _ArrowLeftLine = _interopRequireDefault(require("@rsuite/icons/ArrowLeftLine"));
29
+
30
+ var _ArrowRightLine = _interopRequireDefault(require("@rsuite/icons/ArrowRightLine"));
31
+
32
+ var _propTypes = _interopRequireDefault(require("prop-types"));
33
+
34
+ var _SidenavDropdownCollapse = _interopRequireDefault(require("./SidenavDropdownCollapse"));
35
+
36
+ var _Ripple = _interopRequireDefault(require("../Ripple"));
37
+
38
+ var _Disclosure = _interopRequireDefault(require("../Disclosure/Disclosure"));
39
+
40
+ var _templateObject, _templateObject2;
41
+
42
+ /**
43
+ * Tree View Node
44
+ * @see https://www.w3.org/TR/wai-aria-practices-1.2/#TreeView
45
+ */
46
+ var ExpandedSidenavDropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
47
+ var sidenavContext = (0, _react.useContext)(_Sidenav.SidenavContext);
48
+
49
+ if (!sidenavContext) {
50
+ throw new Error('<SidenavDropdownMenu> component is not supposed to be used standalone. Use <Nav.Menu> inside <Sidenav> instead.');
51
+ }
52
+
53
+ var _props$as = props.as,
54
+ Component = _props$as === void 0 ? 'li' : _props$as,
55
+ children = props.children,
56
+ disabled = props.disabled,
57
+ className = props.className,
58
+ style = props.style,
59
+ _props$classPrefix = props.classPrefix,
60
+ classPrefix = _props$classPrefix === void 0 ? 'dropdown-item' : _props$classPrefix,
61
+ tabIndex = props.tabIndex,
62
+ icon = props.icon,
63
+ title = props.title,
64
+ eventKey = props.eventKey,
65
+ onClick = props.onClick,
66
+ onSelect = props.onSelect,
67
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "children", "disabled", "className", "style", "classPrefix", "tabIndex", "icon", "title", "eventKey", "onClick", "onSelect"]);
68
+
69
+ var _useCustom = (0, _useCustom2.default)('DropdownMenu'),
70
+ rtl = _useCustom.rtl;
71
+
72
+ var _useClassNames = (0, _utils.useClassNames)(classPrefix),
73
+ merge = _useClassNames.merge,
74
+ withClassPrefix = _useClassNames.withClassPrefix,
75
+ prefix = _useClassNames.prefix;
76
+
77
+ var _sidenavContext$openK = sidenavContext.openKeys,
78
+ openKeys = _sidenavContext$openK === void 0 ? [] : _sidenavContext$openK,
79
+ onOpenChange = sidenavContext.onOpenChange,
80
+ onSidenavSelect = sidenavContext.onSelect;
81
+ var handleClick = (0, _react.useCallback)(function (event) {
82
+ if (disabled) return;
83
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(eventKey, event);
84
+ onSidenavSelect === null || onSidenavSelect === void 0 ? void 0 : onSidenavSelect(eventKey, event);
85
+ }, [disabled, onSelect, onSidenavSelect, eventKey]);
86
+ var menuitemEventHandlers = {
87
+ onClick: (0, _utils.createChainedFunction)(handleClick, onClick)
88
+ };
89
+ var Icon = rtl ? _ArrowLeftLine.default : _ArrowRightLine.default;
90
+ return /*#__PURE__*/_react.default.createElement(_Disclosure.default, {
91
+ open: !(0, _isNil.default)(eventKey) && openKeys.includes(eventKey),
92
+ onToggle: function onToggle(_, event) {
93
+ return onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(eventKey, event);
94
+ }
95
+ }, function (_ref) {
96
+ var open = _ref.open;
97
+ var classes = merge(className, prefix('submenu'), prefix("pull-" + (rtl ? 'left' : 'right')), prefix(open ? 'expand' : 'collapse'), withClassPrefix({
98
+ 'with-icon': icon,
99
+ // open,
100
+ disabled: disabled
101
+ }));
102
+ return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
103
+ ref: ref
104
+ }, rest, {
105
+ tabIndex: disabled ? -1 : tabIndex,
106
+ style: style,
107
+ className: classes
108
+ }, menuitemEventHandlers), /*#__PURE__*/_react.default.createElement(_Disclosure.default.Button, null, function (buttonProps) {
109
+ return /*#__PURE__*/_react.default.createElement("button", (0, _extends2.default)({
110
+ className: prefix(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["toggle"]))),
111
+ onClick: handleClick
112
+ }, (0, _omit.default)(buttonProps, ['open'])), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
113
+ className: prefix('menu-icon')
114
+ }), title, /*#__PURE__*/_react.default.createElement(Icon, {
115
+ className: prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["toggle-icon"])))
116
+ }), /*#__PURE__*/_react.default.createElement(_Ripple.default, null));
117
+ }), /*#__PURE__*/_react.default.createElement(_Disclosure.default.Content, null, function (_ref2) {
118
+ var open = _ref2.open;
119
+ return /*#__PURE__*/_react.default.createElement(_SidenavDropdownCollapse.default, {
120
+ open: open
121
+ }, children);
122
+ }));
123
+ });
124
+ });
125
+
126
+ ExpandedSidenavDropdownMenu.displayName = 'Sidenav.Dropdown.Menu';
127
+ ExpandedSidenavDropdownMenu.propTypes = {
128
+ as: _propTypes.default.elementType,
129
+ expanded: _propTypes.default.bool,
130
+ disabled: _propTypes.default.bool,
131
+ onSelect: _propTypes.default.func,
132
+ onClick: _propTypes.default.func,
133
+ icon: _propTypes.default.node,
134
+ eventKey: _propTypes.default.any,
135
+ className: _propTypes.default.string,
136
+ style: _propTypes.default.object,
137
+ children: _propTypes.default.node,
138
+ classPrefix: _propTypes.default.string,
139
+ tabIndex: _propTypes.default.number,
140
+ title: _propTypes.default.node,
141
+ onMouseOver: _propTypes.default.func,
142
+ onMouseOut: _propTypes.default.func
143
+ };
144
+ var _default = ExpandedSidenavDropdownMenu;
145
+ exports.default = _default;
@@ -21,17 +21,23 @@ export interface SidenavProps<T = string> extends WithAsProps {
21
21
  onOpenChange?: (openKeys: T[], event: React.SyntheticEvent) => void;
22
22
  /**
23
23
  * Select the callback function for the menu
24
- * @deprecated Use <Sidenav onSelect> instead
24
+ * @deprecated Use <Nav onSelect> instead
25
25
  */
26
26
  onSelect?: (eventKey: T | undefined, event: React.SyntheticEvent) => void;
27
27
  }
28
28
  export declare const SidenavContext: React.Context<SidenavContextType<string> | null>;
29
29
  export interface SidenavContextType<T = string> {
30
30
  openKeys: T[];
31
- activeKey: T | null;
31
+ /**
32
+ * @deprecated Use activeKey from NavContext instead
33
+ */
34
+ activeKey: T | undefined;
32
35
  sidenav: boolean;
33
36
  expanded: boolean;
34
37
  onOpenChange: (eventKey: T, event: React.SyntheticEvent) => void;
38
+ /**
39
+ * @deprecated Use onSelect from NavContext instead
40
+ */
35
41
  onSelect?: (eventKey: T | undefined, event: React.SyntheticEvent) => void;
36
42
  }
37
43
  export interface SidenavComponent extends RsRefForwardingComponent<'div', SidenavProps> {
@@ -46,8 +46,7 @@ var Sidenav = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
46
46
  appearance = _props$appearance === void 0 ? 'default' : _props$appearance,
47
47
  _props$expanded = props.expanded,
48
48
  expanded = _props$expanded === void 0 ? true : _props$expanded,
49
- _props$activeKey = props.activeKey,
50
- activeKey = _props$activeKey === void 0 ? null : _props$activeKey,
49
+ activeKey = props.activeKey,
51
50
  _props$defaultOpenKey = props.defaultOpenKeys,
52
51
  defaultOpenKeys = _props$defaultOpenKey === void 0 ? emptyArray : _props$defaultOpenKey,
53
52
  openKeysProp = props.openKeys,
@@ -1,13 +1,17 @@
1
1
  import React from 'react';
2
2
  import { TypeAttributes, WithAsProps, RsRefForwardingComponent } from '../@types/common';
3
3
  import { IconProps } from '@rsuite/icons/lib/Icon';
4
- export interface SidenavDropdownProps<T = any> extends WithAsProps, Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
4
+ import Button from '../Button';
5
+ import NavDropdownItem from '../Nav/NavDropdownItem';
6
+ import NavDropdownMenu from '../Nav/NavDropdownMenu';
7
+ export declare type SidenavDropdownTrigger = 'click' | 'hover' | 'contextMenu';
8
+ export interface NavDropdownProps<T = any> extends WithAsProps, Omit<React.HTMLAttributes<HTMLElement>, 'onSelect' | 'title'> {
5
9
  /** Define the title as a submenu */
6
10
  title?: React.ReactNode;
7
11
  /** Set the icon */
8
12
  icon?: React.ReactElement<IconProps>;
9
- /** The option to activate the state, corresponding to the eventkey in the Dropdown.item */
10
- activeKey?: T;
13
+ /** Triggering events */
14
+ trigger?: SidenavDropdownTrigger | readonly SidenavDropdownTrigger[];
11
15
  /** The placement of Menu */
12
16
  placement?: TypeAttributes.Placement8;
13
17
  /** Whether or not component is disabled */
@@ -28,10 +32,9 @@ export interface SidenavDropdownProps<T = any> extends WithAsProps, Omit<React.H
28
32
  */
29
33
  open?: boolean;
30
34
  /**
31
- * Custom title
32
- * @deprecated Use `renderToggle` instead.
35
+ * @deprecated
33
36
  */
34
- renderTitle?: (children?: React.ReactNode) => React.ReactNode;
37
+ renderTitle?: (children: React.ReactNode) => React.ReactNode;
35
38
  /** Custom Toggle */
36
39
  renderToggle?: (props: WithAsProps, ref: React.Ref<any>) => any;
37
40
  /** The callback function that the menu closes */
@@ -39,7 +42,26 @@ export interface SidenavDropdownProps<T = any> extends WithAsProps, Omit<React.H
39
42
  /** Menu Pop-up callback function */
40
43
  onOpen?: () => void;
41
44
  /** Callback function for menu state switching */
42
- onToggle?: (open?: boolean) => void;
45
+ onToggle?: (open: boolean, eventKey?: T | undefined, event?: React.SyntheticEvent) => void;
46
+ }
47
+ export interface SidenavDropdownComponent extends RsRefForwardingComponent<'div', NavDropdownProps> {
48
+ <ToggleAs extends React.ElementType = typeof Button>(props: NavDropdownProps & {
49
+ ref?: React.Ref<any>;
50
+ toggleAs?: ToggleAs;
51
+ } & React.ComponentProps<ToggleAs>, context: any): JSX.Element | null;
52
+ Item: typeof NavDropdownItem;
53
+ Menu: typeof NavDropdownMenu;
43
54
  }
44
- declare const SidenavDropdown: RsRefForwardingComponent<'li', SidenavDropdownProps>;
55
+ /**
56
+ * @private this component is not supposed to be used directly
57
+ * Instead it's rendered by a <Nav.Menu> within a <Sidenav>
58
+ *
59
+ * <Sidenav>
60
+ * <Nav>
61
+ * <Nav.Menu> -> This submenu will render <SidenavDropdown> component
62
+ * </Nav.Menu>
63
+ * </Nav>
64
+ * </Sidenav>
65
+ */
66
+ declare const SidenavDropdown: SidenavDropdownComponent;
45
67
  export default SidenavDropdown;
@@ -15,11 +15,9 @@ var _react = _interopRequireWildcard(require("react"));
15
15
 
16
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
17
17
 
18
- var _kebabCase = _interopRequireDefault(require("lodash/kebabCase"));
19
-
20
18
  var _omit = _interopRequireDefault(require("lodash/omit"));
21
19
 
22
- var _DropdownToggle = _interopRequireDefault(require("../Dropdown/DropdownToggle"));
20
+ var _pick = _interopRequireDefault(require("lodash/pick"));
23
21
 
24
22
  var _utils = require("../utils");
25
23
 
@@ -27,106 +25,180 @@ var _Sidenav = require("./Sidenav");
27
25
 
28
26
  var _deprecatePropType = _interopRequireDefault(require("../utils/deprecatePropType"));
29
27
 
30
- var _SidenavDropdownCollapse = _interopRequireDefault(require("./SidenavDropdownCollapse"));
28
+ var _Menu = _interopRequireDefault(require("../Menu/Menu"));
29
+
30
+ var _MenuItem = _interopRequireDefault(require("../Menu/MenuItem"));
31
+
32
+ var _kebabCase = _interopRequireDefault(require("lodash/kebabCase"));
33
+
34
+ var _ExpandedSidenavDropdown = _interopRequireDefault(require("./ExpandedSidenavDropdown"));
31
35
 
32
- var _Disclosure = _interopRequireDefault(require("../Disclosure/Disclosure"));
36
+ var _NavContext = _interopRequireDefault(require("../Nav/NavContext"));
33
37
 
34
- var _DropdownContext = _interopRequireDefault(require("../Dropdown/DropdownContext"));
38
+ var _NavDropdownItem = _interopRequireDefault(require("../Nav/NavDropdownItem"));
35
39
 
36
- var _useInternalId = _interopRequireDefault(require("../utils/useInternalId"));
40
+ var _NavDropdownMenu = _interopRequireDefault(require("../Nav/NavDropdownMenu"));
37
41
 
42
+ var _SidenavDropdownToggle = _interopRequireDefault(require("./SidenavDropdownToggle"));
43
+
44
+ var _NavMenu = require("../Nav/NavMenu");
45
+
46
+ /**
47
+ * @private this component is not supposed to be used directly
48
+ * Instead it's rendered by a <Nav.Menu> within a <Sidenav>
49
+ *
50
+ * <Sidenav>
51
+ * <Nav>
52
+ * <Nav.Menu> -> This submenu will render <SidenavDropdown> component
53
+ * </Nav.Menu>
54
+ * </Nav>
55
+ * </Sidenav>
56
+ */
38
57
  var SidenavDropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
58
+ var sidenav = (0, _react.useContext)(_Sidenav.SidenavContext);
59
+ var nav = (0, _react.useContext)(_NavContext.default);
60
+ var navMenu = (0, _react.useContext)(_NavMenu.NavMenuContext);
61
+
62
+ if (!sidenav || !nav || !navMenu) {
63
+ throw new Error('<Sidenav.Dropdown> must be rendered within a <Nav> component within a <Sidenav> component.');
64
+ }
65
+
39
66
  var _props$as = props.as,
40
67
  Component = _props$as === void 0 ? 'div' : _props$as,
41
68
  title = props.title,
42
- children = props.children,
43
- className = props.className,
44
- menuStyle = props.menuStyle,
45
- disabled = props.disabled,
46
- renderTitle = props.renderTitle,
47
- renderToggle = props.renderToggle,
48
- _props$classPrefix = props.classPrefix,
49
- classPrefix = _props$classPrefix === void 0 ? 'dropdown' : _props$classPrefix,
69
+ onClose = props.onClose,
70
+ onOpen = props.onOpen,
71
+ onToggle = props.onToggle,
72
+ eventKey = props.eventKey,
73
+ _props$trigger = props.trigger,
74
+ trigger = _props$trigger === void 0 ? 'click' : _props$trigger,
50
75
  _props$placement = props.placement,
51
76
  placement = _props$placement === void 0 ? 'bottomStart' : _props$placement,
52
- toggleClassName = props.toggleClassName,
53
- icon = props.icon,
54
- eventKey = props.eventKey,
55
77
  toggleAs = props.toggleAs,
56
- noCaret = props.noCaret,
78
+ toggleClassName = props.toggleClassName,
79
+ _props$classPrefix = props.classPrefix,
80
+ classPrefix = _props$classPrefix === void 0 ? 'dropdown' : _props$classPrefix,
81
+ className = props.className,
82
+ disabled = props.disabled,
83
+ children = props.children,
84
+ menuStyle = props.menuStyle,
57
85
  style = props.style,
58
- onOpen = props.onOpen,
59
- onClose = props.onClose,
60
- openProp = props.open,
61
- onToggle = props.onToggle,
62
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "title", "children", "className", "menuStyle", "disabled", "renderTitle", "renderToggle", "classPrefix", "placement", "toggleClassName", "icon", "eventKey", "toggleAs", "noCaret", "style", "onOpen", "onClose", "open", "onToggle"]);
63
- var sidenavContext = (0, _react.useContext)(_Sidenav.SidenavContext);
64
- var dropdownContext = (0, _react.useContext)(_DropdownContext.default);
86
+ toggleProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "title", "onClose", "onOpen", "onToggle", "eventKey", "trigger", "placement", "toggleAs", "toggleClassName", "classPrefix", "className", "disabled", "children", "menuStyle", "style"]);
65
87
 
66
88
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
67
89
  merge = _useClassNames.merge,
68
- withClassPrefix = _useClassNames.withClassPrefix;
90
+ withClassPrefix = _useClassNames.withClassPrefix,
91
+ prefix = _useClassNames.prefix;
92
+
93
+ var _useClassNames2 = (0, _utils.useClassNames)('dropdown-menu'),
94
+ withMenuClassPrefix = _useClassNames2.withClassPrefix,
95
+ mergeMenuClassName = _useClassNames2.merge;
96
+
97
+ var _useClassNames3 = (0, _utils.useClassNames)('nav-item'),
98
+ withNavItemClassPrefix = _useClassNames3.withClassPrefix,
99
+ mergeNavItemClassNames = _useClassNames3.merge;
100
+
101
+ var items = navMenu[0].items;
102
+ var hasSelectedItems = // has items that is active indicated by <Nav activeKey>
103
+ nav.activeKey && items.some(function (item) {
104
+ return item.eventKey === nav.activeKey;
105
+ }) || // has items that is active indicated by <Nav.Item active>
106
+ items.some(function (item) {
107
+ return item.active;
108
+ });
109
+ var menuButtonTriggers = (0, _react.useMemo)(function () {
110
+ if (!trigger) {
111
+ return undefined;
112
+ }
113
+
114
+ var triggerMap = {
115
+ hover: 'mouseover',
116
+ click: 'click',
117
+ contextMenu: 'contextmenu'
118
+ };
69
119
 
70
- var internalId = (0, _useInternalId.default)('SidenavDropdown');
71
- var uniqueKey = eventKey !== null && eventKey !== void 0 ? eventKey : internalId;
120
+ if (!Array.isArray(trigger)) {
121
+ return [triggerMap[trigger]];
122
+ }
123
+
124
+ return trigger.map(function (t) {
125
+ return triggerMap[t];
126
+ });
127
+ }, [trigger]); // Render a disclosure when inside expanded <Sidenav>
72
128
 
73
- if (!sidenavContext || !dropdownContext) {
74
- throw new Error('<SidenavDropdown> component is not supposed to be used standalone. Use <Dropdown> inside <Sidenav> instead.');
129
+ if (sidenav.expanded) {
130
+ return /*#__PURE__*/_react.default.createElement(_ExpandedSidenavDropdown.default, (0, _extends2.default)({
131
+ ref: ref
132
+ }, props));
75
133
  }
76
134
 
77
- var _sidenavContext$openK = sidenavContext.openKeys,
78
- openKeys = _sidenavContext$openK === void 0 ? [] : _sidenavContext$openK,
79
- onOpenChange = sidenavContext.onOpenChange;
80
- var hasSelectedItem = dropdownContext.hasSelectedItem;
81
- var handleToggleDisclosure = (0, _react.useCallback)(function (open, event) {
82
- if (open) {
83
- onClose === null || onClose === void 0 ? void 0 : onClose();
84
- } else {
85
- onOpen === null || onOpen === void 0 ? void 0 : onOpen();
135
+ var renderMenuButton = function renderMenuButton(menuButtonProps, buttonRef) {
136
+ return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
137
+ disabled: disabled
138
+ }, function (_ref, menuitemRef) {
139
+ var active = _ref.active,
140
+ menuitemProps = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["active"]);
141
+ return /*#__PURE__*/_react.default.createElement(_SidenavDropdownToggle.default, (0, _extends2.default)({
142
+ ref: (0, _utils.mergeRefs)(buttonRef, menuitemRef),
143
+ as: toggleAs,
144
+ className: mergeNavItemClassNames(toggleClassName, withNavItemClassPrefix({
145
+ focus: active
146
+ }))
147
+ }, menuButtonProps, (0, _omit.default)(menuitemProps, ['onClick']), (0, _omit.default)(toggleProps, 'data-testid')), title);
148
+ });
149
+ };
150
+
151
+ return /*#__PURE__*/_react.default.createElement(_Menu.default, {
152
+ menuButtonText: title,
153
+ renderMenuButton: renderMenuButton,
154
+ openMenuOn: menuButtonTriggers,
155
+ renderMenuPopup: function renderMenuPopup(_ref2, popupRef) {
156
+ var open = _ref2.open,
157
+ popupProps = (0, _objectWithoutPropertiesLoose2.default)(_ref2, ["open"]);
158
+ var menuClassName = mergeMenuClassName(className, withMenuClassPrefix({})); // When inside a collapsed <Sidenav>, render a header in menu
159
+
160
+ var showHeader = !!sidenav;
161
+ return /*#__PURE__*/_react.default.createElement("ul", (0, _extends2.default)({
162
+ ref: popupRef,
163
+ className: menuClassName,
164
+ style: menuStyle,
165
+ hidden: !open
166
+ }, popupProps), showHeader && /*#__PURE__*/_react.default.createElement("div", {
167
+ className: prefix('header')
168
+ }, title), children);
169
+ },
170
+ onToggleMenu: function onToggleMenu(open, event) {
171
+ onToggle === null || onToggle === void 0 ? void 0 : onToggle(open, eventKey, event);
172
+ sidenav === null || sidenav === void 0 ? void 0 : sidenav.onOpenChange(eventKey, event);
173
+
174
+ if (open) {
175
+ onOpen === null || onOpen === void 0 ? void 0 : onOpen();
176
+ } else {
177
+ onClose === null || onClose === void 0 ? void 0 : onClose();
178
+ }
86
179
  }
87
-
88
- onToggle === null || onToggle === void 0 ? void 0 : onToggle(open);
89
- onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(uniqueKey, event);
90
- }, [onClose, onOpen, onToggle, uniqueKey, onOpenChange]);
91
- var open = openProp !== null && openProp !== void 0 ? openProp : openKeys.includes(uniqueKey);
92
- return /*#__PURE__*/_react.default.createElement(_Disclosure.default, {
93
- open: open,
94
- onToggle: handleToggleDisclosure
95
- }, function (_ref, containerRef) {
180
+ }, function (_ref3, menuContainerRef) {
96
181
  var _withClassPrefix;
97
182
 
98
- var open = _ref.open;
99
- var classes = merge(className, withClassPrefix((_withClassPrefix = {}, _withClassPrefix["placement-" + (0, _kebabCase.default)((0, _utils.placementPolyfill)(placement))] = placement, _withClassPrefix[open ? 'expand' : 'collapse'] = true, _withClassPrefix.disabled = disabled, _withClassPrefix['selected-within'] = hasSelectedItem, _withClassPrefix['no-caret'] = noCaret, _withClassPrefix)));
183
+ var open = _ref3.open,
184
+ menuContainer = (0, _objectWithoutPropertiesLoose2.default)(_ref3, ["open"]);
185
+ var classes = merge(className, withClassPrefix((_withClassPrefix = {}, _withClassPrefix["placement-" + (0, _kebabCase.default)((0, _utils.placementPolyfill)(placement))] = !!placement, _withClassPrefix.disabled = disabled, _withClassPrefix.open = open, _withClassPrefix.submenu = true, _withClassPrefix['selected-within'] = hasSelectedItems, _withClassPrefix)));
100
186
  return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
101
- ref: (0, _utils.mergeRefs)(ref, containerRef),
102
- style: style,
187
+ ref: (0, _utils.mergeRefs)(ref, menuContainerRef),
103
188
  className: classes
104
- }, rest, {
105
- "data-event-key": eventKey
106
- }), /*#__PURE__*/_react.default.createElement(_Disclosure.default.Button, null, function (buttonProps, buttonRef) {
107
- return /*#__PURE__*/_react.default.createElement(_DropdownToggle.default, (0, _extends2.default)({
108
- ref: buttonRef,
109
- as: toggleAs,
110
- noCaret: noCaret,
111
- className: toggleClassName,
112
- renderToggle: renderToggle,
113
- icon: icon,
114
- placement: placement
115
- }, (0, _omit.default)(buttonProps, ['open'])), title);
116
- }), /*#__PURE__*/_react.default.createElement(_Disclosure.default.Content, null, function (_ref2) {
117
- var open = _ref2.open;
118
- return /*#__PURE__*/_react.default.createElement(_SidenavDropdownCollapse.default, {
119
- open: open,
120
- style: menuStyle
121
- }, children);
189
+ }, menuContainer, (0, _pick.default)(toggleProps, ['data-testid']), {
190
+ style: style
122
191
  }));
123
192
  });
124
193
  });
125
194
 
195
+ SidenavDropdown.Item = _NavDropdownItem.default;
196
+ SidenavDropdown.Menu = _NavDropdownMenu.default;
126
197
  SidenavDropdown.displayName = 'Sidenav.Dropdown';
127
198
  SidenavDropdown.propTypes = {
128
199
  activeKey: _propTypes.default.any,
129
200
  classPrefix: _propTypes.default.string,
201
+ trigger: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.oneOf(['click', 'hover', 'contextMenu'])]),
130
202
  placement: _propTypes.default.oneOf(_utils.PLACEMENT_8),
131
203
  title: _propTypes.default.node,
132
204
  disabled: _propTypes.default.bool,
@@ -135,7 +207,6 @@ SidenavDropdown.propTypes = {
135
207
  className: _propTypes.default.string,
136
208
  toggleClassName: _propTypes.default.string,
137
209
  children: _propTypes.default.node,
138
- tabIndex: _propTypes.default.number,
139
210
  open: (0, _deprecatePropType.default)(_propTypes.default.bool),
140
211
  eventKey: _propTypes.default.any,
141
212
  as: _propTypes.default.elementType,
@@ -145,11 +216,11 @@ SidenavDropdown.propTypes = {
145
216
  onClose: _propTypes.default.func,
146
217
  onOpen: _propTypes.default.func,
147
218
  onToggle: _propTypes.default.func,
219
+ onSelect: _propTypes.default.func,
148
220
  onMouseEnter: _propTypes.default.func,
149
221
  onMouseLeave: _propTypes.default.func,
150
222
  onContextMenu: _propTypes.default.func,
151
223
  onClick: _propTypes.default.func,
152
- renderTitle: (0, _deprecatePropType.default)(_propTypes.default.func),
153
224
  renderToggle: _propTypes.default.func
154
225
  };
155
226
  var _default = SidenavDropdown;
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
1
  import { RsRefForwardingComponent, WithAsProps } from '../@types/common';
2
+ import React from 'react';
3
3
  import { IconProps } from '@rsuite/icons/lib/Icon';
4
4
  export interface SidenavDropdownItemProps<T = any> extends WithAsProps, Omit<React.HTMLAttributes<HTMLElement>, 'onSelect'> {
5
5
  /** Active the current option */
@@ -20,14 +20,31 @@ export interface SidenavDropdownItemProps<T = any> extends WithAsProps, Omit<Rea
20
20
  icon?: React.ReactElement<IconProps>;
21
21
  /** The submenu that this menuitem controls (if exists) */
22
22
  submenu?: React.ReactElement;
23
- /** Whether the submenu is expanded, used in Sidenav. */
24
- expanded?: boolean;
23
+ /**
24
+ * The sub-level menu appears from the right side by default, and when `pullLeft` is set, it appears from the left.
25
+ * @deprecated Submenus are now pointing the same direction.
26
+ */
27
+ pullLeft?: boolean;
28
+ /**
29
+ * Whether the submenu is opened.
30
+ * @deprecated
31
+ * @internal
32
+ */
33
+ open?: boolean;
25
34
  /** Select the callback function for the current option */
26
35
  onSelect?: (eventKey: T, event: React.SyntheticEvent) => void;
27
36
  }
28
37
  /**
29
- * Tree View Node
30
- * @see https://www.w3.org/TR/wai-aria-practices-1.2/#TreeView
38
+ * @private this component is not supposed to be used directly
39
+ * Instead it's rendered by a <Nav.Item> within a <Sidenav>
40
+ *
41
+ * <Sidenav>
42
+ * <Nav>
43
+ * <Nav.Menu>
44
+ * <Nav.Item></Nav.Item> -> This will render <SidenavDropdownItem> component
45
+ * </Nav.Menu>
46
+ * </Nav>
47
+ * </Sidenav>
31
48
  */
32
49
  declare const SidenavDropdownItem: RsRefForwardingComponent<'li', SidenavDropdownItemProps>;
33
50
  export default SidenavDropdownItem;