rsuite 5.11.0 → 5.13.1
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.
- package/CHANGELOG.md +30 -0
- package/Nav/styles/index.less +7 -1
- package/Navbar/styles/index.less +6 -1
- package/Sidenav/styles/index.less +47 -9
- package/cjs/Cascader/DropdownMenu.js +8 -3
- package/cjs/Disclosure/Disclosure.d.ts +1 -1
- package/cjs/Disclosure/DisclosureContext.d.ts +1 -1
- package/cjs/Dropdown/Dropdown.js +26 -110
- package/cjs/Dropdown/DropdownItem.js +14 -58
- package/cjs/Dropdown/DropdownMenu.js +32 -76
- package/cjs/Dropdown/DropdownToggle.js +4 -17
- package/cjs/Form/Form.js +21 -7
- package/cjs/Form/FormContext.d.ts +18 -13
- package/cjs/Form/useSchemaModel.d.ts +9 -0
- package/cjs/Form/useSchemaModel.js +46 -0
- package/cjs/FormControl/FormControl.d.ts +3 -0
- package/cjs/FormControl/FormControl.js +9 -2
- package/cjs/FormControl/useRegisterModel.d.ts +4 -0
- package/cjs/FormControl/useRegisterModel.js +20 -0
- package/cjs/Menu/Menu.d.ts +1 -0
- package/cjs/Menu/Menu.js +1 -0
- package/cjs/Menu/MenuItem.d.ts +1 -0
- package/cjs/Menu/MenuItem.js +1 -0
- package/cjs/Menu/Menubar.d.ts +3 -0
- package/cjs/Menu/Menubar.js +4 -0
- package/cjs/Nav/Nav.d.ts +7 -2
- package/cjs/Nav/Nav.js +105 -5
- package/cjs/Nav/NavContext.d.ts +2 -8
- package/cjs/Nav/NavContext.js +1 -7
- package/cjs/Nav/NavDropdown.d.ts +71 -0
- package/cjs/Nav/NavDropdown.js +193 -0
- package/cjs/Nav/NavDropdownItem.d.ts +39 -0
- package/cjs/Nav/NavDropdownItem.js +141 -0
- package/cjs/Nav/NavDropdownMenu.d.ts +26 -0
- package/cjs/Nav/NavDropdownMenu.js +156 -0
- package/cjs/Nav/NavDropdownToggle.d.ts +21 -0
- package/cjs/Nav/NavDropdownToggle.js +74 -0
- package/cjs/Nav/NavItem.d.ts +2 -0
- package/cjs/Nav/NavItem.js +13 -26
- package/cjs/Nav/NavMenu.d.ts +38 -0
- package/cjs/Nav/NavMenu.js +122 -0
- package/cjs/Navbar/NavbarDropdown.d.ts +57 -0
- package/cjs/Navbar/NavbarDropdown.js +147 -0
- package/cjs/Navbar/NavbarDropdownItem.d.ts +41 -0
- package/cjs/Navbar/NavbarDropdownItem.js +149 -0
- package/cjs/Navbar/NavbarDropdownMenu.d.ts +37 -0
- package/cjs/Navbar/NavbarDropdownMenu.js +155 -0
- package/cjs/Navbar/NavbarDropdownToggle.d.ts +19 -0
- package/cjs/Navbar/NavbarDropdownToggle.js +72 -0
- package/cjs/Navbar/NavbarItem.d.ts +5 -2
- package/cjs/Navbar/NavbarItem.js +10 -4
- package/cjs/Overlay/OverlayTrigger.d.ts +4 -4
- package/cjs/Picker/utils.js +22 -15
- package/cjs/Sidenav/ExpandedSidenavDropdown.d.ts +43 -0
- package/cjs/Sidenav/ExpandedSidenavDropdown.js +166 -0
- package/cjs/Sidenav/ExpandedSidenavDropdownItem.d.ts +31 -0
- package/cjs/Sidenav/ExpandedSidenavDropdownItem.js +141 -0
- package/cjs/Sidenav/ExpandedSidenavDropdownMenu.d.ts +26 -0
- package/cjs/Sidenav/ExpandedSidenavDropdownMenu.js +145 -0
- package/cjs/Sidenav/Sidenav.d.ts +8 -2
- package/cjs/Sidenav/Sidenav.js +1 -2
- package/cjs/Sidenav/SidenavDropdown.d.ts +30 -8
- package/cjs/Sidenav/SidenavDropdown.js +144 -73
- package/cjs/Sidenav/SidenavDropdownItem.d.ts +22 -5
- package/cjs/Sidenav/SidenavDropdownItem.js +88 -72
- package/cjs/Sidenav/SidenavDropdownMenu.d.ts +26 -16
- package/cjs/Sidenav/SidenavDropdownMenu.js +122 -90
- package/cjs/Sidenav/SidenavDropdownToggle.d.ts +19 -0
- package/cjs/Sidenav/SidenavDropdownToggle.js +72 -0
- package/cjs/Sidenav/SidenavItem.d.ts +3 -0
- package/cjs/Sidenav/SidenavItem.js +22 -14
- package/cjs/Sidenav/SidenavToggle.d.ts +5 -1
- package/cjs/Sidenav/SidenavToggle.js +25 -9
- package/cjs/Whisper/Whisper.d.ts +3 -5
- package/cjs/Whisper/test/Whisper.test.d.ts +1 -0
- package/cjs/Whisper/test/Whisper.test.js +23 -0
- package/cjs/index.d.ts +1 -1
- package/cjs/utils/deprecateComponent.js +4 -6
- package/cjs/utils/deprecatePropType.d.ts +1 -5
- package/cjs/utils/deprecatePropType.js +7 -14
- package/cjs/utils/treeUtils.js +8 -10
- package/cjs/utils/useInternalId.d.ts +1 -1
- package/cjs/utils/useInternalId.js +2 -2
- package/cjs/utils/warnOnce.d.ts +9 -0
- package/cjs/utils/warnOnce.js +22 -0
- package/dist/rsuite-rtl.css +81 -15
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +81 -15
- package/dist/rsuite.js +303 -28
- package/dist/rsuite.js.map +1 -1
- package/dist/rsuite.min.css +1 -1
- package/dist/rsuite.min.css.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/Cascader/DropdownMenu.js +8 -3
- package/esm/Disclosure/Disclosure.d.ts +1 -1
- package/esm/Disclosure/DisclosureContext.d.ts +1 -1
- package/esm/Dropdown/Dropdown.js +25 -105
- package/esm/Dropdown/DropdownItem.js +13 -55
- package/esm/Dropdown/DropdownMenu.js +31 -76
- package/esm/Dropdown/DropdownToggle.js +4 -14
- package/esm/Form/Form.js +19 -7
- package/esm/Form/FormContext.d.ts +18 -13
- package/esm/Form/useSchemaModel.d.ts +9 -0
- package/esm/Form/useSchemaModel.js +39 -0
- package/esm/FormControl/FormControl.d.ts +3 -0
- package/esm/FormControl/FormControl.js +9 -6
- package/esm/FormControl/useRegisterModel.d.ts +4 -0
- package/esm/FormControl/useRegisterModel.js +14 -0
- package/esm/Menu/Menu.d.ts +1 -0
- package/esm/Menu/Menu.js +1 -0
- package/esm/Menu/MenuItem.d.ts +1 -0
- package/esm/Menu/MenuItem.js +1 -0
- package/esm/Menu/Menubar.d.ts +3 -0
- package/esm/Menu/Menubar.js +4 -0
- package/esm/Nav/Nav.d.ts +7 -2
- package/esm/Nav/Nav.js +96 -5
- package/esm/Nav/NavContext.d.ts +2 -8
- package/esm/Nav/NavContext.js +1 -6
- package/esm/Nav/NavDropdown.d.ts +71 -0
- package/esm/Nav/NavDropdown.js +170 -0
- package/esm/Nav/NavDropdownItem.d.ts +39 -0
- package/esm/Nav/NavDropdownItem.js +123 -0
- package/esm/Nav/NavDropdownMenu.d.ts +26 -0
- package/esm/Nav/NavDropdownMenu.js +138 -0
- package/esm/Nav/NavDropdownToggle.d.ts +21 -0
- package/esm/Nav/NavDropdownToggle.js +57 -0
- package/esm/Nav/NavItem.d.ts +2 -0
- package/esm/Nav/NavItem.js +13 -21
- package/esm/Nav/NavMenu.d.ts +38 -0
- package/esm/Nav/NavMenu.js +98 -0
- package/esm/Navbar/NavbarDropdown.d.ts +57 -0
- package/esm/Navbar/NavbarDropdown.js +124 -0
- package/esm/Navbar/NavbarDropdownItem.d.ts +41 -0
- package/esm/Navbar/NavbarDropdownItem.js +128 -0
- package/esm/Navbar/NavbarDropdownMenu.d.ts +37 -0
- package/esm/Navbar/NavbarDropdownMenu.js +135 -0
- package/esm/Navbar/NavbarDropdownToggle.d.ts +19 -0
- package/esm/Navbar/NavbarDropdownToggle.js +55 -0
- package/esm/Navbar/NavbarItem.d.ts +5 -2
- package/esm/Navbar/NavbarItem.js +11 -4
- package/esm/Overlay/OverlayTrigger.d.ts +4 -4
- package/esm/Picker/utils.js +22 -14
- package/esm/Sidenav/ExpandedSidenavDropdown.d.ts +43 -0
- package/esm/Sidenav/ExpandedSidenavDropdown.js +140 -0
- package/esm/Sidenav/ExpandedSidenavDropdownItem.d.ts +31 -0
- package/esm/Sidenav/ExpandedSidenavDropdownItem.js +120 -0
- package/esm/Sidenav/ExpandedSidenavDropdownMenu.d.ts +26 -0
- package/esm/Sidenav/ExpandedSidenavDropdownMenu.js +121 -0
- package/esm/Sidenav/Sidenav.d.ts +8 -2
- package/esm/Sidenav/Sidenav.js +1 -2
- package/esm/Sidenav/SidenavDropdown.d.ts +30 -8
- package/esm/Sidenav/SidenavDropdown.js +145 -75
- package/esm/Sidenav/SidenavDropdownItem.d.ts +22 -5
- package/esm/Sidenav/SidenavDropdownItem.js +87 -71
- package/esm/Sidenav/SidenavDropdownMenu.d.ts +26 -16
- package/esm/Sidenav/SidenavDropdownMenu.js +122 -86
- package/esm/Sidenav/SidenavDropdownToggle.d.ts +19 -0
- package/esm/Sidenav/SidenavDropdownToggle.js +55 -0
- package/esm/Sidenav/SidenavItem.d.ts +3 -0
- package/esm/Sidenav/SidenavItem.js +23 -15
- package/esm/Sidenav/SidenavToggle.d.ts +5 -1
- package/esm/Sidenav/SidenavToggle.js +22 -9
- package/esm/Whisper/Whisper.d.ts +3 -5
- package/esm/Whisper/test/Whisper.test.d.ts +1 -0
- package/esm/Whisper/test/Whisper.test.js +16 -0
- package/esm/index.d.ts +1 -1
- package/esm/utils/deprecateComponent.js +3 -4
- package/esm/utils/deprecatePropType.d.ts +1 -5
- package/esm/utils/deprecatePropType.js +3 -13
- package/esm/utils/treeUtils.js +8 -10
- package/esm/utils/useInternalId.d.ts +1 -1
- package/esm/utils/useInternalId.js +2 -2
- package/esm/utils/warnOnce.d.ts +9 -0
- package/esm/utils/warnOnce.js +18 -0
- package/package.json +1 -1
- package/styles/color-modes/dark.less +3 -0
- package/styles/color-modes/high-contrast.less +3 -0
- package/styles/color-modes/light.less +3 -0
- package/styles/variables.less +3 -0
package/cjs/Nav/Nav.js
CHANGED
|
@@ -17,8 +17,6 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
17
17
|
|
|
18
18
|
var _NavItem = _interopRequireDefault(require("./NavItem"));
|
|
19
19
|
|
|
20
|
-
var _Dropdown = _interopRequireDefault(require("../Dropdown"));
|
|
21
|
-
|
|
22
20
|
var _utils = require("../utils");
|
|
23
21
|
|
|
24
22
|
var _Navbar = require("../Navbar/Navbar");
|
|
@@ -31,6 +29,26 @@ var _useEnsuredRef = _interopRequireDefault(require("../utils/useEnsuredRef"));
|
|
|
31
29
|
|
|
32
30
|
var _Menubar = _interopRequireDefault(require("../Menu/Menubar"));
|
|
33
31
|
|
|
32
|
+
var _NavDropdown = _interopRequireDefault(require("./NavDropdown"));
|
|
33
|
+
|
|
34
|
+
var _NavMenu = _interopRequireWildcard(require("./NavMenu"));
|
|
35
|
+
|
|
36
|
+
var _deprecateComponent = _interopRequireDefault(require("../utils/deprecateComponent"));
|
|
37
|
+
|
|
38
|
+
var _NavDropdownItem = _interopRequireDefault(require("./NavDropdownItem"));
|
|
39
|
+
|
|
40
|
+
var _NavDropdownMenu = _interopRequireDefault(require("./NavDropdownMenu"));
|
|
41
|
+
|
|
42
|
+
var _NavbarDropdownItem = _interopRequireDefault(require("../Navbar/NavbarDropdownItem"));
|
|
43
|
+
|
|
44
|
+
var _SidenavDropdownItem = _interopRequireDefault(require("../Sidenav/SidenavDropdownItem"));
|
|
45
|
+
|
|
46
|
+
var _NavbarItem = _interopRequireDefault(require("../Navbar/NavbarItem"));
|
|
47
|
+
|
|
48
|
+
var _SidenavItem = _interopRequireDefault(require("../Sidenav/SidenavItem"));
|
|
49
|
+
|
|
50
|
+
var _useInternalId = _interopRequireDefault(require("../utils/useInternalId"));
|
|
51
|
+
|
|
34
52
|
var Nav = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
35
53
|
var _props$as = props.as,
|
|
36
54
|
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
@@ -77,7 +95,6 @@ var Nav = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
77
95
|
var activeKey = activeKeyProp !== null && activeKeyProp !== void 0 ? activeKeyProp : activeKeyFromSidenav;
|
|
78
96
|
var contextValue = (0, _react.useMemo)(function () {
|
|
79
97
|
return {
|
|
80
|
-
withinNav: true,
|
|
81
98
|
activeKey: activeKey,
|
|
82
99
|
onSelect: onSelectProp !== null && onSelectProp !== void 0 ? onSelectProp : onSelectFromSidenav
|
|
83
100
|
};
|
|
@@ -118,8 +135,91 @@ var Nav = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
118
135
|
})));
|
|
119
136
|
});
|
|
120
137
|
|
|
121
|
-
Nav.Dropdown
|
|
122
|
-
|
|
138
|
+
var DeprecatedNavDropdown = (0, _deprecateComponent.default)(_NavDropdown.default, '<Nav.Dropdown> is deprecated, use <Nav.Menu> instead.');
|
|
139
|
+
DeprecatedNavDropdown.Menu = (0, _deprecateComponent.default)(_NavDropdownMenu.default, '<Nav.Dropdown.Menu> is deprecated, use <Nav.Menu> instead');
|
|
140
|
+
DeprecatedNavDropdown.Item = (0, _deprecateComponent.default)(_NavDropdownItem.default, '<Nav.Dropdown.Item> is deprecated, use <Nav.Item> instead');
|
|
141
|
+
Nav.Dropdown = DeprecatedNavDropdown;
|
|
142
|
+
/**
|
|
143
|
+
* The <Nav.Item> API
|
|
144
|
+
* When used as direct child of <Nav>, render the NavItem
|
|
145
|
+
* When used within a <Nav.Menu>, render the NavDropdownItem
|
|
146
|
+
*/
|
|
147
|
+
|
|
148
|
+
Nav.Item = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
149
|
+
var nav = (0, _react.useContext)(_NavContext.default);
|
|
150
|
+
|
|
151
|
+
if (!nav) {
|
|
152
|
+
throw new Error('<Nav.Item> must be rendered within a <Nav> component.');
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
var parentNavMenu = (0, _react.useContext)(_NavMenu.NavMenuContext);
|
|
156
|
+
var navbar = (0, _react.useContext)(_Navbar.NavbarContext);
|
|
157
|
+
var sidenav = (0, _react.useContext)(_Sidenav.SidenavContext);
|
|
158
|
+
|
|
159
|
+
var _ref2 = parentNavMenu !== null && parentNavMenu !== void 0 ? parentNavMenu : [],
|
|
160
|
+
dispatch = _ref2[1];
|
|
161
|
+
|
|
162
|
+
var _id = (0, _useInternalId.default)('Nav.Item');
|
|
163
|
+
|
|
164
|
+
(0, _react.useEffect)(function () {
|
|
165
|
+
if (dispatch) {
|
|
166
|
+
var _props$active;
|
|
167
|
+
|
|
168
|
+
dispatch({
|
|
169
|
+
type: _NavMenu.NavMenuActionType.RegisterItem,
|
|
170
|
+
payload: {
|
|
171
|
+
_id: _id,
|
|
172
|
+
eventKey: props.eventKey,
|
|
173
|
+
active: (_props$active = props.active) !== null && _props$active !== void 0 ? _props$active : false
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
return function () {
|
|
177
|
+
dispatch({
|
|
178
|
+
type: _NavMenu.NavMenuActionType.UnregisterItem,
|
|
179
|
+
payload: {
|
|
180
|
+
_id: _id
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
}, [dispatch, _id, props.eventKey, props.active]);
|
|
186
|
+
|
|
187
|
+
if (parentNavMenu) {
|
|
188
|
+
if (navbar) {
|
|
189
|
+
return /*#__PURE__*/_react.default.createElement(_NavbarDropdownItem.default, (0, _extends2.default)({
|
|
190
|
+
ref: ref
|
|
191
|
+
}, props));
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
if (sidenav) {
|
|
195
|
+
return /*#__PURE__*/_react.default.createElement(_SidenavDropdownItem.default, (0, _extends2.default)({
|
|
196
|
+
ref: ref
|
|
197
|
+
}, props));
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
return /*#__PURE__*/_react.default.createElement(_NavDropdownItem.default, (0, _extends2.default)({
|
|
201
|
+
ref: ref
|
|
202
|
+
}, props));
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
if (navbar) {
|
|
206
|
+
return /*#__PURE__*/_react.default.createElement(_NavbarItem.default, (0, _extends2.default)({
|
|
207
|
+
ref: ref
|
|
208
|
+
}, props));
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (sidenav) {
|
|
212
|
+
return /*#__PURE__*/_react.default.createElement(_SidenavItem.default, (0, _extends2.default)({
|
|
213
|
+
ref: ref
|
|
214
|
+
}, props));
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return /*#__PURE__*/_react.default.createElement(_NavItem.default, (0, _extends2.default)({
|
|
218
|
+
ref: ref
|
|
219
|
+
}, props));
|
|
220
|
+
});
|
|
221
|
+
Nav.Item.displayName = 'Nav.Item';
|
|
222
|
+
Nav.Menu = _NavMenu.default;
|
|
123
223
|
Nav.displayName = 'Nav';
|
|
124
224
|
Nav.propTypes = {
|
|
125
225
|
classPrefix: _propTypes.default.string,
|
package/cjs/Nav/NavContext.d.ts
CHANGED
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
export interface NavContextProps {
|
|
3
|
-
|
|
4
|
-
* Whether component is rendered within a <Nav>
|
|
5
|
-
*
|
|
6
|
-
* FIXME: Bad design. Should use NavContextProps | null to determin whether within a <Nav>
|
|
7
|
-
*/
|
|
8
|
-
withinNav: boolean;
|
|
9
|
-
activeKey: string | null;
|
|
3
|
+
activeKey: string | undefined;
|
|
10
4
|
onSelect?: (eventKey: string | undefined, event: React.SyntheticEvent) => void;
|
|
11
5
|
}
|
|
12
|
-
declare const NavContext: React.Context<NavContextProps>;
|
|
6
|
+
declare const NavContext: React.Context<NavContextProps | null>;
|
|
13
7
|
export default NavContext;
|
package/cjs/Nav/NavContext.js
CHANGED
|
@@ -7,13 +7,7 @@ exports.default = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
var NavContext = /*#__PURE__*/_react.default.createContext({
|
|
13
|
-
withinNav: false,
|
|
14
|
-
activeKey: null,
|
|
15
|
-
onSelect: _noop.default
|
|
16
|
-
});
|
|
10
|
+
var NavContext = /*#__PURE__*/_react.default.createContext(null);
|
|
17
11
|
|
|
18
12
|
var _default = NavContext;
|
|
19
13
|
exports.default = _default;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TypeAttributes, WithAsProps, RsRefForwardingComponent } from '../@types/common';
|
|
3
|
+
import Button from '../Button';
|
|
4
|
+
import NavDropdownItem from './NavDropdownItem';
|
|
5
|
+
import NavDropdownMenu from './NavDropdownMenu';
|
|
6
|
+
import { NavDropdownToggleProps } from './NavDropdownToggle';
|
|
7
|
+
export declare type NavDropdownTrigger = 'click' | 'hover' | 'contextMenu';
|
|
8
|
+
export interface NavDropdownProps<T = any> extends WithAsProps, Omit<React.HTMLAttributes<HTMLElement>, 'onSelect' | 'title'> {
|
|
9
|
+
/** Define the title as a submenu */
|
|
10
|
+
title?: React.ReactNode;
|
|
11
|
+
/** Set the icon */
|
|
12
|
+
icon?: NavDropdownToggleProps['icon'];
|
|
13
|
+
/** Triggering events */
|
|
14
|
+
trigger?: NavDropdownTrigger | readonly NavDropdownTrigger[];
|
|
15
|
+
/** The placement of Menu */
|
|
16
|
+
placement?: TypeAttributes.Placement8;
|
|
17
|
+
/** Whether or not component is disabled */
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
/** The style of the menu */
|
|
20
|
+
menuStyle?: React.CSSProperties;
|
|
21
|
+
/** A css class to apply to the Toggle DOM node */
|
|
22
|
+
toggleClassName?: string;
|
|
23
|
+
/** The value of the current option */
|
|
24
|
+
eventKey?: T;
|
|
25
|
+
/** You can use a custom element type for this toggle component */
|
|
26
|
+
toggleAs?: React.ElementType;
|
|
27
|
+
/** No caret variation */
|
|
28
|
+
noCaret?: NavDropdownToggleProps['noCaret'];
|
|
29
|
+
/**
|
|
30
|
+
* Open the menu and control it
|
|
31
|
+
* @deprecated
|
|
32
|
+
*/
|
|
33
|
+
open?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* @deprecated
|
|
36
|
+
*/
|
|
37
|
+
renderTitle?: (children: React.ReactNode) => React.ReactNode;
|
|
38
|
+
/** Custom Toggle */
|
|
39
|
+
renderToggle?: (props: WithAsProps, ref: React.Ref<any>) => any;
|
|
40
|
+
/** The callback function that the menu closes */
|
|
41
|
+
onClose?: () => void;
|
|
42
|
+
/** Menu Pop-up callback function */
|
|
43
|
+
onOpen?: () => void;
|
|
44
|
+
/** Callback function for menu state switching */
|
|
45
|
+
onToggle?: (open: boolean, eventKey?: T | undefined, event?: React.SyntheticEvent) => void;
|
|
46
|
+
}
|
|
47
|
+
export interface NavDropdownComponent 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
|
+
/**
|
|
53
|
+
* @deprecated Use <Nav.Item> instead.
|
|
54
|
+
*/
|
|
55
|
+
Item: typeof NavDropdownItem;
|
|
56
|
+
/**
|
|
57
|
+
* @deprecated Use <Nav.Menu> instead.
|
|
58
|
+
*/
|
|
59
|
+
Menu: typeof NavDropdownMenu;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* @private this component is not supposed to be used directly
|
|
63
|
+
* Instead it's rendered by a <Nav.Menu> call
|
|
64
|
+
*
|
|
65
|
+
* <Nav>
|
|
66
|
+
* <Nav.Menu> -> This will render <NavDropdown> component
|
|
67
|
+
* </Nav.Menu>
|
|
68
|
+
* </Nav>
|
|
69
|
+
*/
|
|
70
|
+
declare const NavDropdown: NavDropdownComponent;
|
|
71
|
+
export default NavDropdown;
|
|
@@ -0,0 +1,193 @@
|
|
|
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 _propTypes = _interopRequireDefault(require("prop-types"));
|
|
17
|
+
|
|
18
|
+
var _omit = _interopRequireDefault(require("lodash/omit"));
|
|
19
|
+
|
|
20
|
+
var _pick = _interopRequireDefault(require("lodash/pick"));
|
|
21
|
+
|
|
22
|
+
var _utils = require("../utils");
|
|
23
|
+
|
|
24
|
+
var _deprecatePropType = _interopRequireDefault(require("../utils/deprecatePropType"));
|
|
25
|
+
|
|
26
|
+
var _DropdownState = require("../Dropdown/DropdownState");
|
|
27
|
+
|
|
28
|
+
var _Menu = _interopRequireDefault(require("../Menu/Menu"));
|
|
29
|
+
|
|
30
|
+
var _kebabCase = _interopRequireDefault(require("lodash/kebabCase"));
|
|
31
|
+
|
|
32
|
+
var _NavContext = _interopRequireDefault(require("./NavContext"));
|
|
33
|
+
|
|
34
|
+
var _NavDropdownItem = _interopRequireDefault(require("./NavDropdownItem"));
|
|
35
|
+
|
|
36
|
+
var _NavDropdownMenu = _interopRequireDefault(require("./NavDropdownMenu"));
|
|
37
|
+
|
|
38
|
+
var _NavDropdownToggle = _interopRequireDefault(require("./NavDropdownToggle"));
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @private this component is not supposed to be used directly
|
|
42
|
+
* Instead it's rendered by a <Nav.Menu> call
|
|
43
|
+
*
|
|
44
|
+
* <Nav>
|
|
45
|
+
* <Nav.Menu> -> This will render <NavDropdown> component
|
|
46
|
+
* </Nav.Menu>
|
|
47
|
+
* </Nav>
|
|
48
|
+
*/
|
|
49
|
+
var NavDropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
50
|
+
var nav = (0, _react.useContext)(_NavContext.default);
|
|
51
|
+
|
|
52
|
+
if (!nav) {
|
|
53
|
+
throw new Error('<Nav.Dropdown> must be rendered within a <Nav> component.');
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
var _props$as = props.as,
|
|
57
|
+
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
58
|
+
title = props.title,
|
|
59
|
+
onClose = props.onClose,
|
|
60
|
+
onOpen = props.onOpen,
|
|
61
|
+
onToggle = props.onToggle,
|
|
62
|
+
eventKey = props.eventKey,
|
|
63
|
+
_props$trigger = props.trigger,
|
|
64
|
+
trigger = _props$trigger === void 0 ? 'click' : _props$trigger,
|
|
65
|
+
_props$placement = props.placement,
|
|
66
|
+
placement = _props$placement === void 0 ? 'bottomStart' : _props$placement,
|
|
67
|
+
toggleAs = props.toggleAs,
|
|
68
|
+
toggleClassName = props.toggleClassName,
|
|
69
|
+
_props$classPrefix = props.classPrefix,
|
|
70
|
+
classPrefix = _props$classPrefix === void 0 ? 'dropdown' : _props$classPrefix,
|
|
71
|
+
className = props.className,
|
|
72
|
+
disabled = props.disabled,
|
|
73
|
+
children = props.children,
|
|
74
|
+
menuStyle = props.menuStyle,
|
|
75
|
+
style = props.style,
|
|
76
|
+
toggleProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "title", "onClose", "onOpen", "onToggle", "eventKey", "trigger", "placement", "toggleAs", "toggleClassName", "classPrefix", "className", "disabled", "children", "menuStyle", "style"]);
|
|
77
|
+
|
|
78
|
+
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
79
|
+
merge = _useClassNames.merge,
|
|
80
|
+
withClassPrefix = _useClassNames.withClassPrefix;
|
|
81
|
+
|
|
82
|
+
var _useClassNames2 = (0, _utils.useClassNames)('dropdown-menu'),
|
|
83
|
+
withMenuClassPrefix = _useClassNames2.withClassPrefix,
|
|
84
|
+
mergeMenuClassName = _useClassNames2.merge;
|
|
85
|
+
|
|
86
|
+
var menuButtonTriggers = (0, _react.useMemo)(function () {
|
|
87
|
+
if (!trigger) {
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
var triggerMap = {
|
|
92
|
+
hover: 'mouseover',
|
|
93
|
+
click: 'click',
|
|
94
|
+
contextMenu: 'contextmenu'
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
if (!Array.isArray(trigger)) {
|
|
98
|
+
return [triggerMap[trigger]];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return trigger.map(function (t) {
|
|
102
|
+
return triggerMap[t];
|
|
103
|
+
});
|
|
104
|
+
}, [trigger]);
|
|
105
|
+
|
|
106
|
+
var _useReducer = (0, _react.useReducer)(_DropdownState.reducer, _DropdownState.initialState),
|
|
107
|
+
items = _useReducer[0].items;
|
|
108
|
+
|
|
109
|
+
var hasSelectedItem = (0, _react.useMemo)(function () {
|
|
110
|
+
return items.some(function (item) {
|
|
111
|
+
return item.props.selected;
|
|
112
|
+
});
|
|
113
|
+
}, [items]);
|
|
114
|
+
|
|
115
|
+
var renderMenuButton = function renderMenuButton(menuButtonProps, menuButtonRef) {
|
|
116
|
+
return /*#__PURE__*/_react.default.createElement(_NavDropdownToggle.default, (0, _extends2.default)({
|
|
117
|
+
ref: menuButtonRef,
|
|
118
|
+
as: toggleAs,
|
|
119
|
+
className: toggleClassName,
|
|
120
|
+
placement: placement,
|
|
121
|
+
disabled: disabled
|
|
122
|
+
}, (0, _omit.default)(menuButtonProps, ['open']), (0, _omit.default)(toggleProps, ['data-testid'])), title);
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
return /*#__PURE__*/_react.default.createElement(_Menu.default, {
|
|
126
|
+
renderMenuButton: renderMenuButton,
|
|
127
|
+
openMenuOn: menuButtonTriggers,
|
|
128
|
+
renderMenuPopup: function renderMenuPopup(_ref, popupRef) {
|
|
129
|
+
var open = _ref.open,
|
|
130
|
+
popupProps = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["open"]);
|
|
131
|
+
var menuClassName = mergeMenuClassName(className, withMenuClassPrefix());
|
|
132
|
+
return /*#__PURE__*/_react.default.createElement("ul", (0, _extends2.default)({
|
|
133
|
+
ref: popupRef,
|
|
134
|
+
className: menuClassName,
|
|
135
|
+
style: menuStyle,
|
|
136
|
+
hidden: !open
|
|
137
|
+
}, popupProps), children);
|
|
138
|
+
},
|
|
139
|
+
onToggleMenu: function onToggleMenu(open, event) {
|
|
140
|
+
onToggle === null || onToggle === void 0 ? void 0 : onToggle(open, eventKey, event);
|
|
141
|
+
|
|
142
|
+
if (open) {
|
|
143
|
+
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
144
|
+
} else {
|
|
145
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}, function (_ref2, menuContainerRef) {
|
|
149
|
+
var _withClassPrefix;
|
|
150
|
+
|
|
151
|
+
var open = _ref2.open,
|
|
152
|
+
menuContainer = (0, _objectWithoutPropertiesLoose2.default)(_ref2, ["open"]);
|
|
153
|
+
var classes = merge(className, withClassPrefix((_withClassPrefix = {}, _withClassPrefix["placement-" + (0, _kebabCase.default)((0, _utils.placementPolyfill)(placement))] = !!placement, _withClassPrefix.disabled = disabled, _withClassPrefix.open = open, _withClassPrefix['selected-within'] = hasSelectedItem, _withClassPrefix)));
|
|
154
|
+
return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
|
|
155
|
+
ref: (0, _utils.mergeRefs)(ref, menuContainerRef),
|
|
156
|
+
className: classes
|
|
157
|
+
}, menuContainer, (0, _pick.default)(toggleProps, ['data-testid']), {
|
|
158
|
+
style: style
|
|
159
|
+
}));
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
NavDropdown.Item = _NavDropdownItem.default;
|
|
164
|
+
NavDropdown.Menu = _NavDropdownMenu.default;
|
|
165
|
+
NavDropdown.displayName = 'Nav.Dropdown';
|
|
166
|
+
NavDropdown.propTypes = {
|
|
167
|
+
classPrefix: _propTypes.default.string,
|
|
168
|
+
trigger: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.oneOf(['click', 'hover', 'contextMenu'])]),
|
|
169
|
+
placement: _propTypes.default.oneOf(_utils.PLACEMENT_8),
|
|
170
|
+
title: _propTypes.default.node,
|
|
171
|
+
disabled: _propTypes.default.bool,
|
|
172
|
+
icon: _propTypes.default.node,
|
|
173
|
+
menuStyle: _propTypes.default.object,
|
|
174
|
+
className: _propTypes.default.string,
|
|
175
|
+
toggleClassName: _propTypes.default.string,
|
|
176
|
+
children: _propTypes.default.node,
|
|
177
|
+
open: (0, _deprecatePropType.default)(_propTypes.default.bool),
|
|
178
|
+
eventKey: _propTypes.default.any,
|
|
179
|
+
as: _propTypes.default.elementType,
|
|
180
|
+
toggleAs: _propTypes.default.elementType,
|
|
181
|
+
noCaret: _propTypes.default.bool,
|
|
182
|
+
style: _propTypes.default.object,
|
|
183
|
+
onClose: _propTypes.default.func,
|
|
184
|
+
onOpen: _propTypes.default.func,
|
|
185
|
+
onToggle: _propTypes.default.func,
|
|
186
|
+
onMouseEnter: _propTypes.default.func,
|
|
187
|
+
onMouseLeave: _propTypes.default.func,
|
|
188
|
+
onContextMenu: _propTypes.default.func,
|
|
189
|
+
onClick: _propTypes.default.func,
|
|
190
|
+
renderToggle: _propTypes.default.func
|
|
191
|
+
};
|
|
192
|
+
var _default = NavDropdown;
|
|
193
|
+
exports.default = _default;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { RsRefForwardingComponent, WithAsProps } from '../@types/common';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { IconProps } from '@rsuite/icons/lib/Icon';
|
|
4
|
+
export interface NavDropdownItemProps<T = any> extends WithAsProps, Omit<React.HTMLAttributes<HTMLElement>, 'onSelect'> {
|
|
5
|
+
/** Active the current option */
|
|
6
|
+
active?: boolean;
|
|
7
|
+
/** Primary content */
|
|
8
|
+
children?: React.ReactNode;
|
|
9
|
+
/** You can use a custom element for this component */
|
|
10
|
+
as?: React.ElementType;
|
|
11
|
+
/** Whether to display the divider */
|
|
12
|
+
divider?: boolean;
|
|
13
|
+
/** Disable the current option */
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
/** The value of the current option */
|
|
16
|
+
eventKey?: T;
|
|
17
|
+
/** Displays a custom panel */
|
|
18
|
+
panel?: boolean;
|
|
19
|
+
/** Set the icon */
|
|
20
|
+
icon?: React.ReactElement<IconProps>;
|
|
21
|
+
/**
|
|
22
|
+
* The sub-level menu appears from the right side by default, and when `pullLeft` is set, it appears from the left.
|
|
23
|
+
* @deprecated Submenus are now pointing the same direction.
|
|
24
|
+
*/
|
|
25
|
+
pullLeft?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Whether the submenu is opened.
|
|
28
|
+
* @deprecated
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
31
|
+
open?: boolean;
|
|
32
|
+
/** Select the callback function for the current option */
|
|
33
|
+
onSelect?: (eventKey: T, event: React.SyntheticEvent) => void;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
38
|
+
declare const NavDropdownItem: RsRefForwardingComponent<'li', NavDropdownItemProps>;
|
|
39
|
+
export default NavDropdownItem;
|
|
@@ -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 _propTypes = _interopRequireDefault(require("prop-types"));
|
|
17
|
+
|
|
18
|
+
var _deprecatePropType = _interopRequireDefault(require("../utils/deprecatePropType"));
|
|
19
|
+
|
|
20
|
+
var _MenuItem = _interopRequireDefault(require("../Menu/MenuItem"));
|
|
21
|
+
|
|
22
|
+
var _isNil = _interopRequireDefault(require("lodash/isNil"));
|
|
23
|
+
|
|
24
|
+
var _utils = require("../utils");
|
|
25
|
+
|
|
26
|
+
var _NavContext = _interopRequireDefault(require("./NavContext"));
|
|
27
|
+
|
|
28
|
+
var _useRenderDropdownItem = require("../Dropdown/useRenderDropdownItem");
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @private
|
|
32
|
+
*/
|
|
33
|
+
var NavDropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
34
|
+
var nav = (0, _react.useContext)(_NavContext.default);
|
|
35
|
+
|
|
36
|
+
if (!nav) {
|
|
37
|
+
throw new Error('<Nav.Dropdown.Item> should be used within a <Nav> component.');
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
var _props$classPrefix = props.classPrefix,
|
|
41
|
+
classPrefix = _props$classPrefix === void 0 ? 'dropdown-item' : _props$classPrefix,
|
|
42
|
+
className = props.className,
|
|
43
|
+
activeProp = props.active,
|
|
44
|
+
eventKey = props.eventKey,
|
|
45
|
+
onSelect = props.onSelect,
|
|
46
|
+
icon = props.icon,
|
|
47
|
+
_props$as = props.as,
|
|
48
|
+
Component = _props$as === void 0 ? 'li' : _props$as,
|
|
49
|
+
divider = props.divider,
|
|
50
|
+
panel = props.panel,
|
|
51
|
+
children = props.children,
|
|
52
|
+
disabled = props.disabled,
|
|
53
|
+
restProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["classPrefix", "className", "active", "eventKey", "onSelect", "icon", "as", "divider", "panel", "children", "disabled"]);
|
|
54
|
+
var activeKey = nav.activeKey,
|
|
55
|
+
onSelectFromNav = nav.onSelect;
|
|
56
|
+
|
|
57
|
+
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
58
|
+
merge = _useClassNames.merge,
|
|
59
|
+
withClassPrefix = _useClassNames.withClassPrefix,
|
|
60
|
+
prefix = _useClassNames.prefix;
|
|
61
|
+
|
|
62
|
+
var selected = activeProp || !(0, _isNil.default)(eventKey) && (0, _utils.shallowEqual)(activeKey, eventKey);
|
|
63
|
+
var handleSelectItem = (0, _react.useCallback)(function (event) {
|
|
64
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(eventKey, event);
|
|
65
|
+
onSelectFromNav === null || onSelectFromNav === void 0 ? void 0 : onSelectFromNav(eventKey, event);
|
|
66
|
+
}, [onSelect, eventKey, onSelectFromNav]);
|
|
67
|
+
var renderDropdownItem = (0, _useRenderDropdownItem.useRenderDropdownItem)(Component);
|
|
68
|
+
|
|
69
|
+
if (divider) {
|
|
70
|
+
return renderDropdownItem((0, _extends2.default)({
|
|
71
|
+
ref: ref,
|
|
72
|
+
role: 'separator',
|
|
73
|
+
className: merge(prefix('divider'), className)
|
|
74
|
+
}, restProps));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (panel) {
|
|
78
|
+
return renderDropdownItem((0, _extends2.default)({
|
|
79
|
+
ref: ref,
|
|
80
|
+
className: merge(prefix('panel'), className),
|
|
81
|
+
children: children
|
|
82
|
+
}, restProps));
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
|
|
86
|
+
selected: selected,
|
|
87
|
+
disabled: disabled,
|
|
88
|
+
onActivate: handleSelectItem
|
|
89
|
+
}, function (_ref, menuitemRef) {
|
|
90
|
+
var selected = _ref.selected,
|
|
91
|
+
active = _ref.active,
|
|
92
|
+
menuitem = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["selected", "active"]);
|
|
93
|
+
var classes = merge(className, withClassPrefix({
|
|
94
|
+
'with-icon': icon,
|
|
95
|
+
active: selected,
|
|
96
|
+
disabled: disabled,
|
|
97
|
+
focus: active,
|
|
98
|
+
divider: divider,
|
|
99
|
+
panel: panel
|
|
100
|
+
}));
|
|
101
|
+
var dataAttributes = {
|
|
102
|
+
'data-event-key': eventKey
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
if (!(0, _isNil.default)(eventKey) && typeof eventKey !== 'string') {
|
|
106
|
+
dataAttributes['data-event-key-type'] = typeof eventKey;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return renderDropdownItem((0, _extends2.default)({
|
|
110
|
+
ref: (0, _utils.mergeRefs)(ref, menuitemRef),
|
|
111
|
+
className: classes
|
|
112
|
+
}, menuitem, dataAttributes, restProps, {
|
|
113
|
+
children: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, icon && /*#__PURE__*/_react.default.cloneElement(icon, {
|
|
114
|
+
className: prefix('menu-icon')
|
|
115
|
+
}), children)
|
|
116
|
+
}));
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
NavDropdownItem.displayName = 'Nav.Dropdown.Item';
|
|
121
|
+
NavDropdownItem.propTypes = {
|
|
122
|
+
as: _propTypes.default.elementType,
|
|
123
|
+
divider: _propTypes.default.bool,
|
|
124
|
+
panel: _propTypes.default.bool,
|
|
125
|
+
trigger: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.oneOf(['click', 'hover'])]),
|
|
126
|
+
open: (0, _deprecatePropType.default)(_propTypes.default.bool),
|
|
127
|
+
active: _propTypes.default.bool,
|
|
128
|
+
disabled: _propTypes.default.bool,
|
|
129
|
+
pullLeft: (0, _deprecatePropType.default)(_propTypes.default.bool),
|
|
130
|
+
onSelect: _propTypes.default.func,
|
|
131
|
+
onClick: _propTypes.default.func,
|
|
132
|
+
icon: _propTypes.default.node,
|
|
133
|
+
eventKey: _propTypes.default.any,
|
|
134
|
+
className: _propTypes.default.string,
|
|
135
|
+
style: _propTypes.default.object,
|
|
136
|
+
children: _propTypes.default.node,
|
|
137
|
+
classPrefix: _propTypes.default.string,
|
|
138
|
+
tabIndex: _propTypes.default.number
|
|
139
|
+
};
|
|
140
|
+
var _default = NavDropdownItem;
|
|
141
|
+
exports.default = _default;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { StandardProps } from '../@types/common';
|
|
3
|
+
import { IconProps } from '@rsuite/icons/lib/Icon';
|
|
4
|
+
export interface NavDropdownMenuProps<T = any> extends StandardProps {
|
|
5
|
+
/** Define the title as a submenu */
|
|
6
|
+
title?: React.ReactNode;
|
|
7
|
+
/** The submenu expands from the left and defaults to the right */
|
|
8
|
+
pullLeft?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Only used for setting the default expand state when it's a submenu.
|
|
11
|
+
*/
|
|
12
|
+
eventKey?: T;
|
|
13
|
+
/** Set the icon */
|
|
14
|
+
icon?: React.ReactElement<IconProps>;
|
|
15
|
+
open?: boolean;
|
|
16
|
+
collapsible?: boolean;
|
|
17
|
+
expanded?: boolean;
|
|
18
|
+
active?: boolean;
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
onToggle?: (open: boolean, eventKey?: T | undefined, event?: React.SyntheticEvent) => void;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @private
|
|
24
|
+
*/
|
|
25
|
+
declare const NavDropdownMenu: React.ForwardRefExoticComponent<NavDropdownMenuProps<any> & Omit<React.HTMLAttributes<HTMLUListElement>, "title" | "onSelect"> & React.RefAttributes<HTMLElement>>;
|
|
26
|
+
export default NavDropdownMenu;
|