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
|
@@ -13,121 +13,140 @@ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runt
|
|
|
13
13
|
|
|
14
14
|
var _react = _interopRequireWildcard(require("react"));
|
|
15
15
|
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
var _utils = require("../utils");
|
|
16
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
19
17
|
|
|
20
18
|
var _Sidenav = require("./Sidenav");
|
|
21
19
|
|
|
22
|
-
var
|
|
20
|
+
var _deprecatePropType = _interopRequireDefault(require("../utils/deprecatePropType"));
|
|
23
21
|
|
|
24
|
-
var
|
|
22
|
+
var _MenuItem = _interopRequireDefault(require("../Menu/MenuItem"));
|
|
25
23
|
|
|
26
|
-
var
|
|
24
|
+
var _isNil = _interopRequireDefault(require("lodash/isNil"));
|
|
27
25
|
|
|
28
|
-
var
|
|
26
|
+
var _utils = require("../utils");
|
|
29
27
|
|
|
30
|
-
var
|
|
28
|
+
var _NavContext = _interopRequireDefault(require("../Nav/NavContext"));
|
|
31
29
|
|
|
32
30
|
var _useRenderDropdownItem = require("../Dropdown/useRenderDropdownItem");
|
|
33
31
|
|
|
32
|
+
var _ExpandedSidenavDropdownItem = _interopRequireDefault(require("./ExpandedSidenavDropdownItem"));
|
|
33
|
+
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
35
|
+
* @private this component is not supposed to be used directly
|
|
36
|
+
* Instead it's rendered by a <Nav.Item> within a <Sidenav>
|
|
37
|
+
*
|
|
38
|
+
* <Sidenav>
|
|
39
|
+
* <Nav>
|
|
40
|
+
* <Nav.Menu>
|
|
41
|
+
* <Nav.Item></Nav.Item> -> This will render <SidenavDropdownItem> component
|
|
42
|
+
* </Nav.Menu>
|
|
43
|
+
* </Nav>
|
|
44
|
+
* </Sidenav>
|
|
37
45
|
*/
|
|
38
46
|
var SidenavDropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
39
|
-
var
|
|
40
|
-
|
|
41
|
-
activeProp = props.active,
|
|
42
|
-
children = props.children,
|
|
43
|
-
disabled = props.disabled,
|
|
44
|
-
divider = props.divider,
|
|
45
|
-
panel = props.panel,
|
|
46
|
-
className = props.className,
|
|
47
|
-
style = props.style,
|
|
48
|
-
_props$classPrefix = props.classPrefix,
|
|
49
|
-
classPrefix = _props$classPrefix === void 0 ? 'dropdown-item' : _props$classPrefix,
|
|
50
|
-
icon = props.icon,
|
|
51
|
-
eventKey = props.eventKey,
|
|
52
|
-
onClick = props.onClick,
|
|
53
|
-
onSelect = props.onSelect,
|
|
54
|
-
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "active", "children", "disabled", "divider", "panel", "className", "style", "classPrefix", "icon", "eventKey", "onClick", "onSelect"]);
|
|
55
|
-
var sidenavContext = (0, _react.useContext)(_Sidenav.SidenavContext);
|
|
56
|
-
var dropdown = (0, _react.useContext)(_DropdownContext.default);
|
|
47
|
+
var sidenav = (0, _react.useContext)(_Sidenav.SidenavContext);
|
|
48
|
+
var nav = (0, _react.useContext)(_NavContext.default);
|
|
57
49
|
|
|
58
|
-
if (!
|
|
59
|
-
throw new Error('<
|
|
50
|
+
if (!sidenav || !nav) {
|
|
51
|
+
throw new Error('<Sidenav.Dropdown.Item> must be used within a <Nav> within a <Sidenav> component.');
|
|
60
52
|
}
|
|
61
53
|
|
|
62
|
-
var
|
|
63
|
-
|
|
64
|
-
|
|
54
|
+
var _props$classPrefix = props.classPrefix,
|
|
55
|
+
classPrefix = _props$classPrefix === void 0 ? 'dropdown-item' : _props$classPrefix,
|
|
56
|
+
className = props.className,
|
|
57
|
+
activeProp = props.active,
|
|
58
|
+
eventKey = props.eventKey,
|
|
59
|
+
onSelect = props.onSelect,
|
|
60
|
+
icon = props.icon,
|
|
61
|
+
_props$as = props.as,
|
|
62
|
+
Component = _props$as === void 0 ? 'li' : _props$as,
|
|
63
|
+
divider = props.divider,
|
|
64
|
+
panel = props.panel,
|
|
65
|
+
children = props.children,
|
|
66
|
+
disabled = props.disabled,
|
|
67
|
+
restProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["classPrefix", "className", "active", "eventKey", "onSelect", "icon", "as", "divider", "panel", "children", "disabled"]);
|
|
65
68
|
|
|
66
69
|
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
67
70
|
merge = _useClassNames.merge,
|
|
68
71
|
withClassPrefix = _useClassNames.withClassPrefix,
|
|
69
72
|
prefix = _useClassNames.prefix;
|
|
70
73
|
|
|
71
|
-
var
|
|
72
|
-
|
|
73
|
-
'with-icon': icon,
|
|
74
|
-
active: selected,
|
|
75
|
-
disabled: disabled
|
|
76
|
-
}));
|
|
77
|
-
var handleClick = (0, _react.useCallback)(function (event) {
|
|
78
|
-
var _dropdown$onSelect;
|
|
74
|
+
var handleSelectItem = (0, _react.useCallback)(function (event) {
|
|
75
|
+
var _nav$onSelect;
|
|
79
76
|
|
|
80
|
-
if (disabled) return;
|
|
81
77
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(eventKey, event);
|
|
82
|
-
(
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
var menuitemEventHandlers = {
|
|
86
|
-
onClick: (0, _utils.createChainedFunction)(handleClick, onClick)
|
|
87
|
-
};
|
|
78
|
+
(_nav$onSelect = nav.onSelect) === null || _nav$onSelect === void 0 ? void 0 : _nav$onSelect.call(nav, eventKey, event);
|
|
79
|
+
}, [onSelect, eventKey, nav]);
|
|
80
|
+
var selected = activeProp || !(0, _isNil.default)(eventKey) && (0, _utils.shallowEqual)(nav === null || nav === void 0 ? void 0 : nav.activeKey, eventKey);
|
|
88
81
|
var renderDropdownItem = (0, _useRenderDropdownItem.useRenderDropdownItem)(Component);
|
|
89
82
|
|
|
83
|
+
if (sidenav.expanded) {
|
|
84
|
+
return /*#__PURE__*/_react.default.createElement(_ExpandedSidenavDropdownItem.default, (0, _extends2.default)({
|
|
85
|
+
ref: ref
|
|
86
|
+
}, props));
|
|
87
|
+
}
|
|
88
|
+
|
|
90
89
|
if (divider) {
|
|
91
90
|
return renderDropdownItem((0, _extends2.default)({
|
|
92
91
|
ref: ref,
|
|
93
92
|
role: 'separator',
|
|
94
|
-
style: style,
|
|
95
93
|
className: merge(prefix('divider'), className)
|
|
96
|
-
},
|
|
94
|
+
}, restProps));
|
|
97
95
|
}
|
|
98
96
|
|
|
99
97
|
if (panel) {
|
|
100
98
|
return renderDropdownItem((0, _extends2.default)({
|
|
101
99
|
ref: ref,
|
|
102
|
-
|
|
103
|
-
style: style,
|
|
104
|
-
className: merge(prefix('panel'), className)
|
|
105
|
-
}, rest, {
|
|
100
|
+
className: merge(prefix('panel'), className),
|
|
106
101
|
children: children
|
|
107
|
-
}));
|
|
102
|
+
}, restProps));
|
|
108
103
|
}
|
|
109
104
|
|
|
110
|
-
return
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
105
|
+
return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
|
|
106
|
+
selected: selected,
|
|
107
|
+
disabled: disabled,
|
|
108
|
+
onActivate: handleSelectItem
|
|
109
|
+
}, function (_ref, menuitemRef) {
|
|
110
|
+
var selected = _ref.selected,
|
|
111
|
+
active = _ref.active,
|
|
112
|
+
menuitem = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["selected", "active"]);
|
|
113
|
+
var classes = merge(className, withClassPrefix({
|
|
114
|
+
'with-icon': icon,
|
|
115
|
+
active: selected,
|
|
116
|
+
disabled: disabled,
|
|
117
|
+
focus: active,
|
|
118
|
+
divider: divider,
|
|
119
|
+
panel: panel
|
|
120
|
+
}));
|
|
121
|
+
var dataAttributes = {
|
|
122
|
+
'data-event-key': eventKey
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
if (!(0, _isNil.default)(eventKey) && typeof eventKey !== 'string') {
|
|
126
|
+
dataAttributes['data-event-key-type'] = typeof eventKey;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return renderDropdownItem((0, _extends2.default)({
|
|
130
|
+
ref: (0, _utils.mergeRefs)(ref, menuitemRef),
|
|
131
|
+
className: classes
|
|
132
|
+
}, menuitem, dataAttributes, restProps, {
|
|
133
|
+
children: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, icon && /*#__PURE__*/_react.default.cloneElement(icon, {
|
|
134
|
+
className: prefix('menu-icon')
|
|
135
|
+
}), children)
|
|
136
|
+
}));
|
|
137
|
+
});
|
|
121
138
|
});
|
|
122
139
|
|
|
123
140
|
SidenavDropdownItem.displayName = 'Sidenav.Dropdown.Item';
|
|
124
141
|
SidenavDropdownItem.propTypes = {
|
|
125
142
|
as: _propTypes.default.elementType,
|
|
126
|
-
expanded: _propTypes.default.bool,
|
|
127
|
-
active: _propTypes.default.bool,
|
|
128
143
|
divider: _propTypes.default.bool,
|
|
129
144
|
panel: _propTypes.default.bool,
|
|
145
|
+
trigger: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.oneOf(['click', 'hover'])]),
|
|
146
|
+
open: (0, _deprecatePropType.default)(_propTypes.default.bool),
|
|
147
|
+
active: _propTypes.default.bool,
|
|
130
148
|
disabled: _propTypes.default.bool,
|
|
149
|
+
pullLeft: (0, _deprecatePropType.default)(_propTypes.default.bool),
|
|
131
150
|
submenu: _propTypes.default.element,
|
|
132
151
|
onSelect: _propTypes.default.func,
|
|
133
152
|
onClick: _propTypes.default.func,
|
|
@@ -137,10 +156,7 @@ SidenavDropdownItem.propTypes = {
|
|
|
137
156
|
style: _propTypes.default.object,
|
|
138
157
|
children: _propTypes.default.node,
|
|
139
158
|
classPrefix: _propTypes.default.string,
|
|
140
|
-
tabIndex: _propTypes.default.number
|
|
141
|
-
title: _propTypes.default.node,
|
|
142
|
-
onMouseOver: _propTypes.default.func,
|
|
143
|
-
onMouseOut: _propTypes.default.func
|
|
159
|
+
tabIndex: _propTypes.default.number
|
|
144
160
|
};
|
|
145
161
|
var _default = SidenavDropdownItem;
|
|
146
162
|
exports.default = _default;
|
|
@@ -1,26 +1,36 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { StandardProps } from '../@types/common';
|
|
3
3
|
import { IconProps } from '@rsuite/icons/lib/Icon';
|
|
4
|
-
export interface SidenavDropdownMenuProps<T = any> extends
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
export interface SidenavDropdownMenuProps<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
12
|
eventKey?: T;
|
|
13
13
|
/** Set the icon */
|
|
14
14
|
icon?: React.ReactElement<IconProps>;
|
|
15
|
-
|
|
15
|
+
open?: boolean;
|
|
16
|
+
collapsible?: boolean;
|
|
16
17
|
expanded?: boolean;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
active?: boolean;
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
activeKey?: T;
|
|
21
|
+
onToggle?: (open: boolean, eventKey?: T | undefined, event?: React.SyntheticEvent) => void;
|
|
20
22
|
}
|
|
21
23
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
+
* @private this component is not supposed to be used directly
|
|
25
|
+
* Instead it's rendered by a <Nav.Menu> within a <Sidenav>
|
|
26
|
+
*
|
|
27
|
+
* <Sidenav>
|
|
28
|
+
* <Nav>
|
|
29
|
+
* <Nav.Menu>
|
|
30
|
+
* <Nav.Menu></Nav.Menu> -> This submenu will render <SidenavDropdownMenu> component
|
|
31
|
+
* </Nav.Menu>
|
|
32
|
+
* </Nav>
|
|
33
|
+
* </Sidenav>
|
|
24
34
|
*/
|
|
25
|
-
declare const SidenavDropdownMenu:
|
|
35
|
+
declare const SidenavDropdownMenu: React.ForwardRefExoticComponent<SidenavDropdownMenuProps<any> & Omit<React.HTMLAttributes<HTMLUListElement>, "title" | "onSelect"> & React.RefAttributes<HTMLElement>>;
|
|
26
36
|
export default SidenavDropdownMenu;
|
|
@@ -7,139 +7,171 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
|
|
|
7
7
|
exports.__esModule = true;
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
-
|
|
12
10
|
var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));
|
|
13
11
|
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
+
|
|
14
14
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
15
15
|
|
|
16
16
|
var _react = _interopRequireWildcard(require("react"));
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _omit2 = _interopRequireDefault(require("lodash/omit"));
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _Menu = _interopRequireDefault(require("../Menu/Menu"));
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _MenuItem = _interopRequireDefault(require("../Menu/MenuItem"));
|
|
23
23
|
|
|
24
|
-
var
|
|
24
|
+
var _utils = require("../utils");
|
|
25
25
|
|
|
26
|
-
var
|
|
26
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
27
27
|
|
|
28
|
-
var
|
|
28
|
+
var _Sidenav = require("./Sidenav");
|
|
29
29
|
|
|
30
|
-
var
|
|
30
|
+
var _ArrowLeftLine = _interopRequireDefault(require("@rsuite/icons/ArrowLeftLine"));
|
|
31
31
|
|
|
32
|
-
var
|
|
32
|
+
var _ArrowRightLine = _interopRequireDefault(require("@rsuite/icons/ArrowRightLine"));
|
|
33
33
|
|
|
34
|
-
var
|
|
34
|
+
var _useCustom2 = _interopRequireDefault(require("../utils/useCustom"));
|
|
35
35
|
|
|
36
|
-
var
|
|
36
|
+
var _ExpandedSidenavDropdownMenu = _interopRequireDefault(require("./ExpandedSidenavDropdownMenu"));
|
|
37
37
|
|
|
38
|
-
var
|
|
38
|
+
var _NavContext = _interopRequireDefault(require("../Nav/NavContext"));
|
|
39
39
|
|
|
40
40
|
var _templateObject, _templateObject2;
|
|
41
41
|
|
|
42
42
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
43
|
+
* @private this component is not supposed to be used directly
|
|
44
|
+
* Instead it's rendered by a <Nav.Menu> within a <Sidenav>
|
|
45
|
+
*
|
|
46
|
+
* <Sidenav>
|
|
47
|
+
* <Nav>
|
|
48
|
+
* <Nav.Menu>
|
|
49
|
+
* <Nav.Menu></Nav.Menu> -> This submenu will render <SidenavDropdownMenu> component
|
|
50
|
+
* </Nav.Menu>
|
|
51
|
+
* </Nav>
|
|
52
|
+
* </Sidenav>
|
|
45
53
|
*/
|
|
46
54
|
var SidenavDropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
47
|
-
var
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
tabIndex = props.tabIndex,
|
|
56
|
-
icon = props.icon,
|
|
57
|
-
title = props.title,
|
|
55
|
+
var sidenav = (0, _react.useContext)(_Sidenav.SidenavContext);
|
|
56
|
+
var nav = (0, _react.useContext)(_NavContext.default);
|
|
57
|
+
|
|
58
|
+
if (!sidenav || !nav) {
|
|
59
|
+
throw new Error('<Sidenav.Dropdown.Menu> must be rendered within a <Nav> within a <Sidenav> component.');
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
var onToggle = props.onToggle,
|
|
58
63
|
eventKey = props.eventKey,
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
title = props.title,
|
|
65
|
+
_props$classPrefix = props.classPrefix,
|
|
66
|
+
classPrefix = _props$classPrefix === void 0 ? 'dropdown-menu' : _props$classPrefix,
|
|
67
|
+
children = props.children,
|
|
68
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["onToggle", "eventKey", "title", "classPrefix", "children"]);
|
|
62
69
|
|
|
63
70
|
var _useCustom = (0, _useCustom2.default)('DropdownMenu'),
|
|
64
71
|
rtl = _useCustom.rtl;
|
|
65
72
|
|
|
73
|
+
var handleToggleSubmenu = (0, _react.useCallback)(function (open, event) {
|
|
74
|
+
onToggle === null || onToggle === void 0 ? void 0 : onToggle(open, eventKey, event);
|
|
75
|
+
}, [eventKey, onToggle]);
|
|
76
|
+
|
|
66
77
|
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
67
|
-
merge = _useClassNames.merge,
|
|
68
|
-
withClassPrefix = _useClassNames.withClassPrefix,
|
|
69
78
|
prefix = _useClassNames.prefix;
|
|
70
79
|
|
|
71
|
-
var
|
|
80
|
+
var _useClassNames2 = (0, _utils.useClassNames)('dropdown-menu'),
|
|
81
|
+
withMenuClassPrefix = _useClassNames2.withClassPrefix,
|
|
82
|
+
mergeMenuClassName = _useClassNames2.merge;
|
|
72
83
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
84
|
+
var _useClassNames3 = (0, _utils.useClassNames)('dropdown-item'),
|
|
85
|
+
mergeItemClassNames = _useClassNames3.merge,
|
|
86
|
+
withItemClassPrefix = _useClassNames3.withClassPrefix,
|
|
87
|
+
prefixItemClassName = _useClassNames3.prefix;
|
|
76
88
|
|
|
77
|
-
|
|
78
|
-
|
|
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 ? _AngleLeft.default : _AngleRight.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)({
|
|
89
|
+
if (sidenav.expanded) {
|
|
90
|
+
return /*#__PURE__*/_react.default.createElement(_ExpandedSidenavDropdownMenu.default, (0, _extends2.default)({
|
|
103
91
|
ref: ref
|
|
104
|
-
},
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
92
|
+
}, (0, _omit2.default)(props, 'classPrefix')));
|
|
93
|
+
} // Parent menu exists. This is a submenu.
|
|
94
|
+
// Should render a `menuitem` that controls this submenu.
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
var _omit = (0, _omit2.default)(rest, ['trigger']),
|
|
98
|
+
icon = _omit.icon,
|
|
99
|
+
className = _omit.className,
|
|
100
|
+
disabled = _omit.disabled,
|
|
101
|
+
menuProps = (0, _objectWithoutPropertiesLoose2.default)(_omit, ["icon", "className", "disabled"]);
|
|
102
|
+
|
|
103
|
+
var Icon = rtl ? _ArrowLeftLine.default : _ArrowRightLine.default;
|
|
104
|
+
return /*#__PURE__*/_react.default.createElement(_Menu.default, {
|
|
105
|
+
openMenuOn: ['mouseover', 'click'],
|
|
106
|
+
renderMenuButton: function renderMenuButton(_ref, buttonRef) {
|
|
107
|
+
var open = _ref.open,
|
|
108
|
+
menuButtonProps = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["open"]);
|
|
109
|
+
return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
|
|
110
|
+
disabled: disabled
|
|
111
|
+
}, function (_ref2, menuitemRef) {
|
|
112
|
+
var selected = _ref2.selected,
|
|
113
|
+
active = _ref2.active,
|
|
114
|
+
menuitem = (0, _objectWithoutPropertiesLoose2.default)(_ref2, ["selected", "active"]);
|
|
115
|
+
var classes = mergeItemClassNames(className, prefixItemClassName(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["toggle"]))), withItemClassPrefix({
|
|
116
|
+
'with-icon': icon,
|
|
117
|
+
open: open,
|
|
118
|
+
active: selected,
|
|
119
|
+
disabled: disabled,
|
|
120
|
+
focus: active
|
|
121
|
+
}));
|
|
122
|
+
return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
|
|
123
|
+
ref: (0, _utils.mergeRefs)(buttonRef, menuitemRef),
|
|
124
|
+
className: classes,
|
|
125
|
+
"data-event-key": eventKey,
|
|
126
|
+
"data-event-key-type": typeof eventKey
|
|
127
|
+
}, menuitem, (0, _omit2.default)(menuButtonProps, ['role'])), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
|
|
128
|
+
className: prefix('menu-icon')
|
|
129
|
+
}), title, /*#__PURE__*/_react.default.createElement(Icon, {
|
|
130
|
+
className: prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["toggle-icon"])))
|
|
131
|
+
}));
|
|
132
|
+
});
|
|
133
|
+
},
|
|
134
|
+
renderMenuPopup: function renderMenuPopup(_ref3, popupRef) {
|
|
135
|
+
var open = _ref3.open,
|
|
136
|
+
popupProps = (0, _objectWithoutPropertiesLoose2.default)(_ref3, ["open"]);
|
|
137
|
+
var menuClassName = mergeMenuClassName(className, withMenuClassPrefix());
|
|
138
|
+
return /*#__PURE__*/_react.default.createElement("ul", (0, _extends2.default)({
|
|
139
|
+
ref: popupRef,
|
|
140
|
+
className: menuClassName,
|
|
141
|
+
hidden: !open
|
|
142
|
+
}, popupProps, menuProps), children);
|
|
143
|
+
},
|
|
144
|
+
onToggleMenu: handleToggleSubmenu
|
|
145
|
+
}, function (_ref4, menuContainerRef) {
|
|
146
|
+
var open = _ref4.open,
|
|
147
|
+
menuContainer = (0, _objectWithoutPropertiesLoose2.default)(_ref4, ["open"]);
|
|
148
|
+
var classes = mergeItemClassNames(className, withItemClassPrefix({
|
|
149
|
+
disabled: disabled,
|
|
150
|
+
open: open,
|
|
151
|
+
submenu: true
|
|
122
152
|
}));
|
|
153
|
+
return /*#__PURE__*/_react.default.createElement("li", (0, _extends2.default)({
|
|
154
|
+
ref: (0, _utils.mergeRefs)(ref, menuContainerRef),
|
|
155
|
+
className: classes
|
|
156
|
+
}, menuContainer));
|
|
123
157
|
});
|
|
124
158
|
});
|
|
125
159
|
|
|
126
160
|
SidenavDropdownMenu.displayName = 'Sidenav.Dropdown.Menu';
|
|
127
161
|
SidenavDropdownMenu.propTypes = {
|
|
128
|
-
|
|
129
|
-
|
|
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,
|
|
162
|
+
active: _propTypes.default.bool,
|
|
163
|
+
activeKey: _propTypes.default.any,
|
|
135
164
|
className: _propTypes.default.string,
|
|
136
|
-
style: _propTypes.default.object,
|
|
137
165
|
children: _propTypes.default.node,
|
|
166
|
+
icon: _propTypes.default.any,
|
|
138
167
|
classPrefix: _propTypes.default.string,
|
|
139
|
-
|
|
168
|
+
pullLeft: _propTypes.default.bool,
|
|
140
169
|
title: _propTypes.default.node,
|
|
141
|
-
|
|
142
|
-
|
|
170
|
+
open: _propTypes.default.bool,
|
|
171
|
+
eventKey: _propTypes.default.any,
|
|
172
|
+
expanded: _propTypes.default.bool,
|
|
173
|
+
collapsible: _propTypes.default.bool,
|
|
174
|
+
onToggle: _propTypes.default.func
|
|
143
175
|
};
|
|
144
176
|
var _default = SidenavDropdownMenu;
|
|
145
177
|
exports.default = _default;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Button from '../Button';
|
|
3
|
+
import { WithAsProps, RsRefForwardingComponent, TypeAttributes } from '../@types/common';
|
|
4
|
+
export interface SidenavDropdownToggleProps extends WithAsProps {
|
|
5
|
+
noCaret?: boolean;
|
|
6
|
+
renderToggle?: (props: WithAsProps, ref: React.Ref<any>) => any;
|
|
7
|
+
placement?: TypeAttributes.Placement8;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* @private this component is not supposed to be used directly
|
|
11
|
+
* Instead it's rendered by a <Nav.Menu> call
|
|
12
|
+
*
|
|
13
|
+
* <Nav>
|
|
14
|
+
* <Nav.Menu> -> This will render <NavDropdown> component that renders a <NavDropdownToggle>
|
|
15
|
+
* </Nav.Menu>
|
|
16
|
+
* </Nav>
|
|
17
|
+
*/
|
|
18
|
+
declare const SidenavDropdownToggle: RsRefForwardingComponent<typeof Button, SidenavDropdownToggleProps>;
|
|
19
|
+
export default SidenavDropdownToggle;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
|
|
10
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
|
|
14
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
+
|
|
16
|
+
var _ArrowDownLine = _interopRequireDefault(require("@rsuite/icons/ArrowDownLine"));
|
|
17
|
+
|
|
18
|
+
var _utils = require("../utils");
|
|
19
|
+
|
|
20
|
+
var _SidenavItem = _interopRequireDefault(require("./SidenavItem"));
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @private this component is not supposed to be used directly
|
|
24
|
+
* Instead it's rendered by a <Nav.Menu> call
|
|
25
|
+
*
|
|
26
|
+
* <Nav>
|
|
27
|
+
* <Nav.Menu> -> This will render <NavDropdown> component that renders a <NavDropdownToggle>
|
|
28
|
+
* </Nav.Menu>
|
|
29
|
+
* </Nav>
|
|
30
|
+
*/
|
|
31
|
+
var SidenavDropdownToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
32
|
+
var _props$as = props.as,
|
|
33
|
+
Component = _props$as === void 0 ? _SidenavItem.default : _props$as,
|
|
34
|
+
className = props.className,
|
|
35
|
+
_props$classPrefix = props.classPrefix,
|
|
36
|
+
classPrefix = _props$classPrefix === void 0 ? 'dropdown-toggle' : _props$classPrefix,
|
|
37
|
+
renderToggle = props.renderToggle,
|
|
38
|
+
children = props.children,
|
|
39
|
+
noCaret = props.noCaret,
|
|
40
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "renderToggle", "children", "noCaret"]);
|
|
41
|
+
|
|
42
|
+
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
43
|
+
prefix = _useClassNames.prefix,
|
|
44
|
+
withClassPrefix = _useClassNames.withClassPrefix,
|
|
45
|
+
merge = _useClassNames.merge;
|
|
46
|
+
|
|
47
|
+
var classes = merge(className, withClassPrefix({
|
|
48
|
+
'no-caret': noCaret
|
|
49
|
+
}));
|
|
50
|
+
|
|
51
|
+
var toggle = /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
|
|
52
|
+
ref: ref,
|
|
53
|
+
className: classes
|
|
54
|
+
}), children, !noCaret && /*#__PURE__*/_react.default.createElement(_ArrowDownLine.default, {
|
|
55
|
+
className: prefix('caret')
|
|
56
|
+
}));
|
|
57
|
+
|
|
58
|
+
return renderToggle ? renderToggle(rest, ref) : toggle;
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
SidenavDropdownToggle.displayName = 'Sidenav.Dropdown.Toggle';
|
|
62
|
+
SidenavDropdownToggle.propTypes = {
|
|
63
|
+
className: _propTypes.default.string,
|
|
64
|
+
children: _propTypes.default.node,
|
|
65
|
+
classPrefix: _propTypes.default.string,
|
|
66
|
+
noCaret: _propTypes.default.bool,
|
|
67
|
+
as: _propTypes.default.elementType,
|
|
68
|
+
renderToggle: _propTypes.default.func,
|
|
69
|
+
placement: _propTypes.default.oneOf(['bottomStart', 'bottomEnd', 'topStart', 'topEnd', 'leftStart', 'rightStart', 'leftEnd', 'rightEnd'])
|
|
70
|
+
};
|
|
71
|
+
var _default = SidenavDropdownToggle;
|
|
72
|
+
exports.default = _default;
|
|
@@ -15,5 +15,8 @@ export interface SidenavItemProps<T = any> extends WithAsProps, Omit<React.HTMLA
|
|
|
15
15
|
divider?: boolean;
|
|
16
16
|
panel?: boolean;
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* @private
|
|
20
|
+
*/
|
|
18
21
|
declare const SidenavItem: RsRefForwardingComponent<'li', SidenavItemProps>;
|
|
19
22
|
export default SidenavItem;
|