rsuite 5.12.0 → 5.13.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 (146) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/Nav/styles/index.less +7 -1
  3. package/Navbar/styles/index.less +6 -1
  4. package/Sidenav/styles/index.less +7 -5
  5. package/cjs/Cascader/DropdownMenu.js +8 -3
  6. package/cjs/Disclosure/Disclosure.d.ts +1 -1
  7. package/cjs/Disclosure/DisclosureContext.d.ts +1 -1
  8. package/cjs/Dropdown/Dropdown.js +26 -110
  9. package/cjs/Dropdown/DropdownItem.js +14 -58
  10. package/cjs/Dropdown/DropdownMenu.js +32 -76
  11. package/cjs/Dropdown/DropdownToggle.js +4 -17
  12. package/cjs/Menu/Menu.d.ts +1 -0
  13. package/cjs/Menu/Menu.js +1 -0
  14. package/cjs/Menu/MenuItem.d.ts +1 -0
  15. package/cjs/Menu/MenuItem.js +1 -0
  16. package/cjs/Menu/Menubar.d.ts +3 -0
  17. package/cjs/Menu/Menubar.js +4 -0
  18. package/cjs/Nav/Nav.d.ts +7 -2
  19. package/cjs/Nav/Nav.js +105 -5
  20. package/cjs/Nav/NavContext.d.ts +2 -8
  21. package/cjs/Nav/NavContext.js +1 -7
  22. package/cjs/Nav/NavDropdown.d.ts +71 -0
  23. package/cjs/Nav/NavDropdown.js +193 -0
  24. package/cjs/Nav/NavDropdownItem.d.ts +39 -0
  25. package/cjs/Nav/NavDropdownItem.js +141 -0
  26. package/cjs/Nav/NavDropdownMenu.d.ts +26 -0
  27. package/cjs/Nav/NavDropdownMenu.js +156 -0
  28. package/cjs/Nav/NavDropdownToggle.d.ts +21 -0
  29. package/cjs/Nav/NavDropdownToggle.js +74 -0
  30. package/cjs/Nav/NavItem.d.ts +2 -0
  31. package/cjs/Nav/NavItem.js +13 -26
  32. package/cjs/Nav/NavMenu.d.ts +38 -0
  33. package/cjs/Nav/NavMenu.js +122 -0
  34. package/cjs/Navbar/NavbarDropdown.d.ts +57 -0
  35. package/cjs/Navbar/NavbarDropdown.js +147 -0
  36. package/cjs/Navbar/NavbarDropdownItem.d.ts +41 -0
  37. package/cjs/Navbar/NavbarDropdownItem.js +149 -0
  38. package/cjs/Navbar/NavbarDropdownMenu.d.ts +37 -0
  39. package/cjs/Navbar/NavbarDropdownMenu.js +155 -0
  40. package/cjs/Navbar/NavbarDropdownToggle.d.ts +19 -0
  41. package/cjs/Navbar/NavbarDropdownToggle.js +72 -0
  42. package/cjs/Navbar/NavbarItem.d.ts +5 -2
  43. package/cjs/Navbar/NavbarItem.js +10 -4
  44. package/cjs/Picker/utils.js +22 -15
  45. package/cjs/Sidenav/ExpandedSidenavDropdown.d.ts +43 -0
  46. package/cjs/Sidenav/ExpandedSidenavDropdown.js +166 -0
  47. package/cjs/Sidenav/ExpandedSidenavDropdownItem.d.ts +31 -0
  48. package/cjs/Sidenav/ExpandedSidenavDropdownItem.js +141 -0
  49. package/cjs/Sidenav/ExpandedSidenavDropdownMenu.d.ts +26 -0
  50. package/cjs/Sidenav/ExpandedSidenavDropdownMenu.js +145 -0
  51. package/cjs/Sidenav/Sidenav.d.ts +8 -2
  52. package/cjs/Sidenav/Sidenav.js +1 -2
  53. package/cjs/Sidenav/SidenavDropdown.d.ts +30 -8
  54. package/cjs/Sidenav/SidenavDropdown.js +144 -73
  55. package/cjs/Sidenav/SidenavDropdownItem.d.ts +22 -5
  56. package/cjs/Sidenav/SidenavDropdownItem.js +88 -72
  57. package/cjs/Sidenav/SidenavDropdownMenu.d.ts +26 -16
  58. package/cjs/Sidenav/SidenavDropdownMenu.js +122 -90
  59. package/cjs/Sidenav/SidenavDropdownToggle.d.ts +19 -0
  60. package/cjs/Sidenav/SidenavDropdownToggle.js +72 -0
  61. package/cjs/Sidenav/SidenavItem.d.ts +3 -0
  62. package/cjs/Sidenav/SidenavItem.js +22 -14
  63. package/cjs/utils/deprecateComponent.js +4 -6
  64. package/cjs/utils/deprecatePropType.d.ts +1 -5
  65. package/cjs/utils/deprecatePropType.js +7 -14
  66. package/cjs/utils/useInternalId.d.ts +1 -1
  67. package/cjs/utils/useInternalId.js +2 -2
  68. package/cjs/utils/warnOnce.d.ts +9 -0
  69. package/cjs/utils/warnOnce.js +22 -0
  70. package/dist/rsuite-rtl.css +18 -9
  71. package/dist/rsuite-rtl.min.css +1 -1
  72. package/dist/rsuite-rtl.min.css.map +1 -1
  73. package/dist/rsuite.css +18 -9
  74. package/dist/rsuite.js +275 -22
  75. package/dist/rsuite.js.map +1 -1
  76. package/dist/rsuite.min.css +1 -1
  77. package/dist/rsuite.min.css.map +1 -1
  78. package/dist/rsuite.min.js +1 -1
  79. package/dist/rsuite.min.js.map +1 -1
  80. package/esm/Cascader/DropdownMenu.js +8 -3
  81. package/esm/Disclosure/Disclosure.d.ts +1 -1
  82. package/esm/Disclosure/DisclosureContext.d.ts +1 -1
  83. package/esm/Dropdown/Dropdown.js +25 -105
  84. package/esm/Dropdown/DropdownItem.js +13 -55
  85. package/esm/Dropdown/DropdownMenu.js +31 -76
  86. package/esm/Dropdown/DropdownToggle.js +4 -14
  87. package/esm/Menu/Menu.d.ts +1 -0
  88. package/esm/Menu/Menu.js +1 -0
  89. package/esm/Menu/MenuItem.d.ts +1 -0
  90. package/esm/Menu/MenuItem.js +1 -0
  91. package/esm/Menu/Menubar.d.ts +3 -0
  92. package/esm/Menu/Menubar.js +4 -0
  93. package/esm/Nav/Nav.d.ts +7 -2
  94. package/esm/Nav/Nav.js +96 -5
  95. package/esm/Nav/NavContext.d.ts +2 -8
  96. package/esm/Nav/NavContext.js +1 -6
  97. package/esm/Nav/NavDropdown.d.ts +71 -0
  98. package/esm/Nav/NavDropdown.js +170 -0
  99. package/esm/Nav/NavDropdownItem.d.ts +39 -0
  100. package/esm/Nav/NavDropdownItem.js +123 -0
  101. package/esm/Nav/NavDropdownMenu.d.ts +26 -0
  102. package/esm/Nav/NavDropdownMenu.js +138 -0
  103. package/esm/Nav/NavDropdownToggle.d.ts +21 -0
  104. package/esm/Nav/NavDropdownToggle.js +57 -0
  105. package/esm/Nav/NavItem.d.ts +2 -0
  106. package/esm/Nav/NavItem.js +13 -21
  107. package/esm/Nav/NavMenu.d.ts +38 -0
  108. package/esm/Nav/NavMenu.js +98 -0
  109. package/esm/Navbar/NavbarDropdown.d.ts +57 -0
  110. package/esm/Navbar/NavbarDropdown.js +124 -0
  111. package/esm/Navbar/NavbarDropdownItem.d.ts +41 -0
  112. package/esm/Navbar/NavbarDropdownItem.js +128 -0
  113. package/esm/Navbar/NavbarDropdownMenu.d.ts +37 -0
  114. package/esm/Navbar/NavbarDropdownMenu.js +135 -0
  115. package/esm/Navbar/NavbarDropdownToggle.d.ts +19 -0
  116. package/esm/Navbar/NavbarDropdownToggle.js +55 -0
  117. package/esm/Navbar/NavbarItem.d.ts +5 -2
  118. package/esm/Navbar/NavbarItem.js +11 -4
  119. package/esm/Picker/utils.js +22 -14
  120. package/esm/Sidenav/ExpandedSidenavDropdown.d.ts +43 -0
  121. package/esm/Sidenav/ExpandedSidenavDropdown.js +140 -0
  122. package/esm/Sidenav/ExpandedSidenavDropdownItem.d.ts +31 -0
  123. package/esm/Sidenav/ExpandedSidenavDropdownItem.js +120 -0
  124. package/esm/Sidenav/ExpandedSidenavDropdownMenu.d.ts +26 -0
  125. package/esm/Sidenav/ExpandedSidenavDropdownMenu.js +121 -0
  126. package/esm/Sidenav/Sidenav.d.ts +8 -2
  127. package/esm/Sidenav/Sidenav.js +1 -2
  128. package/esm/Sidenav/SidenavDropdown.d.ts +30 -8
  129. package/esm/Sidenav/SidenavDropdown.js +145 -75
  130. package/esm/Sidenav/SidenavDropdownItem.d.ts +22 -5
  131. package/esm/Sidenav/SidenavDropdownItem.js +87 -71
  132. package/esm/Sidenav/SidenavDropdownMenu.d.ts +26 -16
  133. package/esm/Sidenav/SidenavDropdownMenu.js +122 -86
  134. package/esm/Sidenav/SidenavDropdownToggle.d.ts +19 -0
  135. package/esm/Sidenav/SidenavDropdownToggle.js +55 -0
  136. package/esm/Sidenav/SidenavItem.d.ts +3 -0
  137. package/esm/Sidenav/SidenavItem.js +23 -15
  138. package/esm/utils/deprecateComponent.js +3 -4
  139. package/esm/utils/deprecatePropType.d.ts +1 -5
  140. package/esm/utils/deprecatePropType.js +3 -13
  141. package/esm/utils/useInternalId.d.ts +1 -1
  142. package/esm/utils/useInternalId.js +2 -2
  143. package/esm/utils/warnOnce.d.ts +9 -0
  144. package/esm/utils/warnOnce.js +18 -0
  145. package/package.json +1 -1
  146. package/styles/variables.less +1 -0
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ exports.__esModule = true;
8
+ exports.default = void 0;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _isNil = _interopRequireDefault(require("lodash/isNil"));
17
+
18
+ var _utils = require("../utils");
19
+
20
+ var _Sidenav = require("./Sidenav");
21
+
22
+ var _propTypes = _interopRequireDefault(require("prop-types"));
23
+
24
+ var _Ripple = _interopRequireDefault(require("../Ripple"));
25
+
26
+ var _SafeAnchor = _interopRequireDefault(require("../SafeAnchor"));
27
+
28
+ var _NavContext = _interopRequireDefault(require("../Nav/NavContext"));
29
+
30
+ var _useRenderDropdownItem = require("../Dropdown/useRenderDropdownItem");
31
+
32
+ /**
33
+ * Tree View Node
34
+ * @see https://www.w3.org/TR/wai-aria-practices-1.2/#TreeView
35
+ */
36
+ var ExpandedSidenavDropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
37
+ var sidenav = (0, _react.useContext)(_Sidenav.SidenavContext);
38
+ var nav = (0, _react.useContext)(_NavContext.default);
39
+
40
+ if (!sidenav || !nav) {
41
+ throw new Error('<SidenavDropdownItem> component is not supposed to be used standalone. Use <Nav.Item> within <Sidenav> instead.');
42
+ }
43
+
44
+ var _props$as = props.as,
45
+ Component = _props$as === void 0 ? 'li' : _props$as,
46
+ activeProp = props.active,
47
+ children = props.children,
48
+ disabled = props.disabled,
49
+ divider = props.divider,
50
+ panel = props.panel,
51
+ className = props.className,
52
+ style = props.style,
53
+ _props$classPrefix = props.classPrefix,
54
+ classPrefix = _props$classPrefix === void 0 ? 'dropdown-item' : _props$classPrefix,
55
+ icon = props.icon,
56
+ eventKey = props.eventKey,
57
+ onClick = props.onClick,
58
+ onSelect = props.onSelect,
59
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "active", "children", "disabled", "divider", "panel", "className", "style", "classPrefix", "icon", "eventKey", "onClick", "onSelect"]);
60
+
61
+ var _useClassNames = (0, _utils.useClassNames)(classPrefix),
62
+ merge = _useClassNames.merge,
63
+ withClassPrefix = _useClassNames.withClassPrefix,
64
+ prefix = _useClassNames.prefix;
65
+
66
+ var selected = activeProp !== null && activeProp !== void 0 ? activeProp : !(0, _isNil.default)(eventKey) && ((0, _utils.shallowEqual)(eventKey, sidenav.activeKey) || (0, _utils.shallowEqual)(nav.activeKey, eventKey));
67
+ var classes = merge(className, withClassPrefix({
68
+ 'with-icon': icon,
69
+ active: selected,
70
+ disabled: disabled
71
+ }));
72
+ var handleClick = (0, _react.useCallback)(function (event) {
73
+ var _nav$onSelect, _sidenav$onSelect;
74
+
75
+ if (disabled) return;
76
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(eventKey, event);
77
+ (_nav$onSelect = nav.onSelect) === null || _nav$onSelect === void 0 ? void 0 : _nav$onSelect.call(nav, eventKey, event);
78
+ (_sidenav$onSelect = sidenav.onSelect) === null || _sidenav$onSelect === void 0 ? void 0 : _sidenav$onSelect.call(sidenav, eventKey, event);
79
+ }, [disabled, onSelect, sidenav, eventKey, nav]);
80
+ var menuitemEventHandlers = {
81
+ onClick: (0, _utils.createChainedFunction)(handleClick, onClick)
82
+ };
83
+ var renderDropdownItem = (0, _useRenderDropdownItem.useRenderDropdownItem)(Component);
84
+
85
+ if (divider) {
86
+ return renderDropdownItem((0, _extends2.default)({
87
+ ref: ref,
88
+ role: 'separator',
89
+ style: style,
90
+ className: merge(prefix('divider'), className)
91
+ }, rest));
92
+ }
93
+
94
+ if (panel) {
95
+ return renderDropdownItem((0, _extends2.default)({
96
+ ref: ref,
97
+ role: 'none presentation',
98
+ style: style,
99
+ className: merge(prefix('panel'), className)
100
+ }, rest, {
101
+ children: children
102
+ }));
103
+ }
104
+
105
+ return renderDropdownItem((0, _extends2.default)({
106
+ ref: ref
107
+ }, rest, {
108
+ style: style,
109
+ className: classes,
110
+ 'aria-current': selected || undefined
111
+ }, menuitemEventHandlers, {
112
+ children: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, icon && /*#__PURE__*/_react.default.cloneElement(icon, {
113
+ className: prefix('menu-icon')
114
+ }), children, /*#__PURE__*/_react.default.createElement(_Ripple.default, null))
115
+ }), _SafeAnchor.default);
116
+ });
117
+
118
+ ExpandedSidenavDropdownItem.displayName = 'Sidenav.Dropdown.Item';
119
+ ExpandedSidenavDropdownItem.propTypes = {
120
+ as: _propTypes.default.elementType,
121
+ expanded: _propTypes.default.bool,
122
+ active: _propTypes.default.bool,
123
+ divider: _propTypes.default.bool,
124
+ panel: _propTypes.default.bool,
125
+ disabled: _propTypes.default.bool,
126
+ submenu: _propTypes.default.element,
127
+ onSelect: _propTypes.default.func,
128
+ onClick: _propTypes.default.func,
129
+ icon: _propTypes.default.node,
130
+ eventKey: _propTypes.default.any,
131
+ className: _propTypes.default.string,
132
+ style: _propTypes.default.object,
133
+ children: _propTypes.default.node,
134
+ classPrefix: _propTypes.default.string,
135
+ tabIndex: _propTypes.default.number,
136
+ title: _propTypes.default.node,
137
+ onMouseOver: _propTypes.default.func,
138
+ onMouseOut: _propTypes.default.func
139
+ };
140
+ var _default = ExpandedSidenavDropdownItem;
141
+ exports.default = _default;
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { RsRefForwardingComponent, WithAsProps } from '../@types/common';
3
+ import { IconProps } from '@rsuite/icons/lib/Icon';
4
+ export interface SidenavDropdownMenuProps<T = any> extends WithAsProps, Omit<React.HTMLAttributes<HTMLLIElement>, 'title' | 'onSelect'> {
5
+ /** Primary content */
6
+ children?: React.ReactNode;
7
+ /** You can use a custom element for this component */
8
+ as?: React.ElementType;
9
+ /** Disable the current option */
10
+ disabled?: boolean;
11
+ /** The value of the current option */
12
+ eventKey?: T;
13
+ /** Set the icon */
14
+ icon?: React.ReactElement<IconProps>;
15
+ /** Whether the submenu is expanded, used in Sidenav. */
16
+ expanded?: boolean;
17
+ /** Select the callback function for the current option */
18
+ onSelect?: (eventKey: T, event: React.SyntheticEvent) => void;
19
+ title?: React.ReactNode;
20
+ }
21
+ /**
22
+ * Tree View Node
23
+ * @see https://www.w3.org/TR/wai-aria-practices-1.2/#TreeView
24
+ */
25
+ declare const ExpandedSidenavDropdownMenu: RsRefForwardingComponent<'li', SidenavDropdownMenuProps>;
26
+ export default ExpandedSidenavDropdownMenu;
@@ -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;