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.
Files changed (181) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/Nav/styles/index.less +7 -1
  3. package/Navbar/styles/index.less +6 -1
  4. package/Sidenav/styles/index.less +47 -9
  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/Form/Form.js +21 -7
  13. package/cjs/Form/FormContext.d.ts +18 -13
  14. package/cjs/Form/useSchemaModel.d.ts +9 -0
  15. package/cjs/Form/useSchemaModel.js +46 -0
  16. package/cjs/FormControl/FormControl.d.ts +3 -0
  17. package/cjs/FormControl/FormControl.js +9 -2
  18. package/cjs/FormControl/useRegisterModel.d.ts +4 -0
  19. package/cjs/FormControl/useRegisterModel.js +20 -0
  20. package/cjs/Menu/Menu.d.ts +1 -0
  21. package/cjs/Menu/Menu.js +1 -0
  22. package/cjs/Menu/MenuItem.d.ts +1 -0
  23. package/cjs/Menu/MenuItem.js +1 -0
  24. package/cjs/Menu/Menubar.d.ts +3 -0
  25. package/cjs/Menu/Menubar.js +4 -0
  26. package/cjs/Nav/Nav.d.ts +7 -2
  27. package/cjs/Nav/Nav.js +105 -5
  28. package/cjs/Nav/NavContext.d.ts +2 -8
  29. package/cjs/Nav/NavContext.js +1 -7
  30. package/cjs/Nav/NavDropdown.d.ts +71 -0
  31. package/cjs/Nav/NavDropdown.js +193 -0
  32. package/cjs/Nav/NavDropdownItem.d.ts +39 -0
  33. package/cjs/Nav/NavDropdownItem.js +141 -0
  34. package/cjs/Nav/NavDropdownMenu.d.ts +26 -0
  35. package/cjs/Nav/NavDropdownMenu.js +156 -0
  36. package/cjs/Nav/NavDropdownToggle.d.ts +21 -0
  37. package/cjs/Nav/NavDropdownToggle.js +74 -0
  38. package/cjs/Nav/NavItem.d.ts +2 -0
  39. package/cjs/Nav/NavItem.js +13 -26
  40. package/cjs/Nav/NavMenu.d.ts +38 -0
  41. package/cjs/Nav/NavMenu.js +122 -0
  42. package/cjs/Navbar/NavbarDropdown.d.ts +57 -0
  43. package/cjs/Navbar/NavbarDropdown.js +147 -0
  44. package/cjs/Navbar/NavbarDropdownItem.d.ts +41 -0
  45. package/cjs/Navbar/NavbarDropdownItem.js +149 -0
  46. package/cjs/Navbar/NavbarDropdownMenu.d.ts +37 -0
  47. package/cjs/Navbar/NavbarDropdownMenu.js +155 -0
  48. package/cjs/Navbar/NavbarDropdownToggle.d.ts +19 -0
  49. package/cjs/Navbar/NavbarDropdownToggle.js +72 -0
  50. package/cjs/Navbar/NavbarItem.d.ts +5 -2
  51. package/cjs/Navbar/NavbarItem.js +10 -4
  52. package/cjs/Overlay/OverlayTrigger.d.ts +4 -4
  53. package/cjs/Picker/utils.js +22 -15
  54. package/cjs/Sidenav/ExpandedSidenavDropdown.d.ts +43 -0
  55. package/cjs/Sidenav/ExpandedSidenavDropdown.js +166 -0
  56. package/cjs/Sidenav/ExpandedSidenavDropdownItem.d.ts +31 -0
  57. package/cjs/Sidenav/ExpandedSidenavDropdownItem.js +141 -0
  58. package/cjs/Sidenav/ExpandedSidenavDropdownMenu.d.ts +26 -0
  59. package/cjs/Sidenav/ExpandedSidenavDropdownMenu.js +145 -0
  60. package/cjs/Sidenav/Sidenav.d.ts +8 -2
  61. package/cjs/Sidenav/Sidenav.js +1 -2
  62. package/cjs/Sidenav/SidenavDropdown.d.ts +30 -8
  63. package/cjs/Sidenav/SidenavDropdown.js +144 -73
  64. package/cjs/Sidenav/SidenavDropdownItem.d.ts +22 -5
  65. package/cjs/Sidenav/SidenavDropdownItem.js +88 -72
  66. package/cjs/Sidenav/SidenavDropdownMenu.d.ts +26 -16
  67. package/cjs/Sidenav/SidenavDropdownMenu.js +122 -90
  68. package/cjs/Sidenav/SidenavDropdownToggle.d.ts +19 -0
  69. package/cjs/Sidenav/SidenavDropdownToggle.js +72 -0
  70. package/cjs/Sidenav/SidenavItem.d.ts +3 -0
  71. package/cjs/Sidenav/SidenavItem.js +22 -14
  72. package/cjs/Sidenav/SidenavToggle.d.ts +5 -1
  73. package/cjs/Sidenav/SidenavToggle.js +25 -9
  74. package/cjs/Whisper/Whisper.d.ts +3 -5
  75. package/cjs/Whisper/test/Whisper.test.d.ts +1 -0
  76. package/cjs/Whisper/test/Whisper.test.js +23 -0
  77. package/cjs/index.d.ts +1 -1
  78. package/cjs/utils/deprecateComponent.js +4 -6
  79. package/cjs/utils/deprecatePropType.d.ts +1 -5
  80. package/cjs/utils/deprecatePropType.js +7 -14
  81. package/cjs/utils/treeUtils.js +8 -10
  82. package/cjs/utils/useInternalId.d.ts +1 -1
  83. package/cjs/utils/useInternalId.js +2 -2
  84. package/cjs/utils/warnOnce.d.ts +9 -0
  85. package/cjs/utils/warnOnce.js +22 -0
  86. package/dist/rsuite-rtl.css +81 -15
  87. package/dist/rsuite-rtl.min.css +1 -1
  88. package/dist/rsuite-rtl.min.css.map +1 -1
  89. package/dist/rsuite.css +81 -15
  90. package/dist/rsuite.js +303 -28
  91. package/dist/rsuite.js.map +1 -1
  92. package/dist/rsuite.min.css +1 -1
  93. package/dist/rsuite.min.css.map +1 -1
  94. package/dist/rsuite.min.js +1 -1
  95. package/dist/rsuite.min.js.map +1 -1
  96. package/esm/Cascader/DropdownMenu.js +8 -3
  97. package/esm/Disclosure/Disclosure.d.ts +1 -1
  98. package/esm/Disclosure/DisclosureContext.d.ts +1 -1
  99. package/esm/Dropdown/Dropdown.js +25 -105
  100. package/esm/Dropdown/DropdownItem.js +13 -55
  101. package/esm/Dropdown/DropdownMenu.js +31 -76
  102. package/esm/Dropdown/DropdownToggle.js +4 -14
  103. package/esm/Form/Form.js +19 -7
  104. package/esm/Form/FormContext.d.ts +18 -13
  105. package/esm/Form/useSchemaModel.d.ts +9 -0
  106. package/esm/Form/useSchemaModel.js +39 -0
  107. package/esm/FormControl/FormControl.d.ts +3 -0
  108. package/esm/FormControl/FormControl.js +9 -6
  109. package/esm/FormControl/useRegisterModel.d.ts +4 -0
  110. package/esm/FormControl/useRegisterModel.js +14 -0
  111. package/esm/Menu/Menu.d.ts +1 -0
  112. package/esm/Menu/Menu.js +1 -0
  113. package/esm/Menu/MenuItem.d.ts +1 -0
  114. package/esm/Menu/MenuItem.js +1 -0
  115. package/esm/Menu/Menubar.d.ts +3 -0
  116. package/esm/Menu/Menubar.js +4 -0
  117. package/esm/Nav/Nav.d.ts +7 -2
  118. package/esm/Nav/Nav.js +96 -5
  119. package/esm/Nav/NavContext.d.ts +2 -8
  120. package/esm/Nav/NavContext.js +1 -6
  121. package/esm/Nav/NavDropdown.d.ts +71 -0
  122. package/esm/Nav/NavDropdown.js +170 -0
  123. package/esm/Nav/NavDropdownItem.d.ts +39 -0
  124. package/esm/Nav/NavDropdownItem.js +123 -0
  125. package/esm/Nav/NavDropdownMenu.d.ts +26 -0
  126. package/esm/Nav/NavDropdownMenu.js +138 -0
  127. package/esm/Nav/NavDropdownToggle.d.ts +21 -0
  128. package/esm/Nav/NavDropdownToggle.js +57 -0
  129. package/esm/Nav/NavItem.d.ts +2 -0
  130. package/esm/Nav/NavItem.js +13 -21
  131. package/esm/Nav/NavMenu.d.ts +38 -0
  132. package/esm/Nav/NavMenu.js +98 -0
  133. package/esm/Navbar/NavbarDropdown.d.ts +57 -0
  134. package/esm/Navbar/NavbarDropdown.js +124 -0
  135. package/esm/Navbar/NavbarDropdownItem.d.ts +41 -0
  136. package/esm/Navbar/NavbarDropdownItem.js +128 -0
  137. package/esm/Navbar/NavbarDropdownMenu.d.ts +37 -0
  138. package/esm/Navbar/NavbarDropdownMenu.js +135 -0
  139. package/esm/Navbar/NavbarDropdownToggle.d.ts +19 -0
  140. package/esm/Navbar/NavbarDropdownToggle.js +55 -0
  141. package/esm/Navbar/NavbarItem.d.ts +5 -2
  142. package/esm/Navbar/NavbarItem.js +11 -4
  143. package/esm/Overlay/OverlayTrigger.d.ts +4 -4
  144. package/esm/Picker/utils.js +22 -14
  145. package/esm/Sidenav/ExpandedSidenavDropdown.d.ts +43 -0
  146. package/esm/Sidenav/ExpandedSidenavDropdown.js +140 -0
  147. package/esm/Sidenav/ExpandedSidenavDropdownItem.d.ts +31 -0
  148. package/esm/Sidenav/ExpandedSidenavDropdownItem.js +120 -0
  149. package/esm/Sidenav/ExpandedSidenavDropdownMenu.d.ts +26 -0
  150. package/esm/Sidenav/ExpandedSidenavDropdownMenu.js +121 -0
  151. package/esm/Sidenav/Sidenav.d.ts +8 -2
  152. package/esm/Sidenav/Sidenav.js +1 -2
  153. package/esm/Sidenav/SidenavDropdown.d.ts +30 -8
  154. package/esm/Sidenav/SidenavDropdown.js +145 -75
  155. package/esm/Sidenav/SidenavDropdownItem.d.ts +22 -5
  156. package/esm/Sidenav/SidenavDropdownItem.js +87 -71
  157. package/esm/Sidenav/SidenavDropdownMenu.d.ts +26 -16
  158. package/esm/Sidenav/SidenavDropdownMenu.js +122 -86
  159. package/esm/Sidenav/SidenavDropdownToggle.d.ts +19 -0
  160. package/esm/Sidenav/SidenavDropdownToggle.js +55 -0
  161. package/esm/Sidenav/SidenavItem.d.ts +3 -0
  162. package/esm/Sidenav/SidenavItem.js +23 -15
  163. package/esm/Sidenav/SidenavToggle.d.ts +5 -1
  164. package/esm/Sidenav/SidenavToggle.js +22 -9
  165. package/esm/Whisper/Whisper.d.ts +3 -5
  166. package/esm/Whisper/test/Whisper.test.d.ts +1 -0
  167. package/esm/Whisper/test/Whisper.test.js +16 -0
  168. package/esm/index.d.ts +1 -1
  169. package/esm/utils/deprecateComponent.js +3 -4
  170. package/esm/utils/deprecatePropType.d.ts +1 -5
  171. package/esm/utils/deprecatePropType.js +3 -13
  172. package/esm/utils/treeUtils.js +8 -10
  173. package/esm/utils/useInternalId.d.ts +1 -1
  174. package/esm/utils/useInternalId.js +2 -2
  175. package/esm/utils/warnOnce.d.ts +9 -0
  176. package/esm/utils/warnOnce.js +18 -0
  177. package/package.json +1 -1
  178. package/styles/color-modes/dark.less +3 -0
  179. package/styles/color-modes/high-contrast.less +3 -0
  180. package/styles/color-modes/light.less +3 -0
  181. package/styles/variables.less +3 -0
@@ -0,0 +1,147 @@
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 _utils = require("../utils");
21
+
22
+ var _deprecatePropType = _interopRequireDefault(require("../utils/deprecatePropType"));
23
+
24
+ var _kebabCase = _interopRequireDefault(require("lodash/kebabCase"));
25
+
26
+ var _ = require(".");
27
+
28
+ var _Disclosure = _interopRequireDefault(require("../Disclosure/Disclosure"));
29
+
30
+ var _NavDropdownItem = _interopRequireDefault(require("../Nav/NavDropdownItem"));
31
+
32
+ var _NavDropdownMenu = _interopRequireDefault(require("../Nav/NavDropdownMenu"));
33
+
34
+ var _NavbarDropdownToggle = _interopRequireDefault(require("./NavbarDropdownToggle"));
35
+
36
+ /**
37
+ * @private
38
+ */
39
+ var NavbarDropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
40
+ var navbar = (0, _react.useContext)(_.NavbarContext);
41
+
42
+ if (!navbar) {
43
+ throw new Error('<Navbar.Dropdown> should be used within a <Navbar> component.');
44
+ }
45
+
46
+ var _props$as = props.as,
47
+ Component = _props$as === void 0 ? 'div' : _props$as,
48
+ title = props.title,
49
+ onClose = props.onClose,
50
+ onOpen = props.onOpen,
51
+ _onToggle = props.onToggle,
52
+ _props$trigger = props.trigger,
53
+ trigger = _props$trigger === void 0 ? 'click' : _props$trigger,
54
+ _props$placement = props.placement,
55
+ placement = _props$placement === void 0 ? 'bottomStart' : _props$placement,
56
+ toggleAs = props.toggleAs,
57
+ toggleClassName = props.toggleClassName,
58
+ _props$classPrefix = props.classPrefix,
59
+ classPrefix = _props$classPrefix === void 0 ? 'dropdown' : _props$classPrefix,
60
+ className = props.className,
61
+ disabled = props.disabled,
62
+ children = props.children,
63
+ menuStyle = props.menuStyle,
64
+ style = props.style,
65
+ toggleProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "title", "onClose", "onOpen", "onToggle", "trigger", "placement", "toggleAs", "toggleClassName", "classPrefix", "className", "disabled", "children", "menuStyle", "style"]);
66
+
67
+ var _useClassNames = (0, _utils.useClassNames)(classPrefix),
68
+ merge = _useClassNames.merge,
69
+ withClassPrefix = _useClassNames.withClassPrefix;
70
+
71
+ var _useClassNames2 = (0, _utils.useClassNames)('dropdown-menu'),
72
+ withMenuClassPrefix = _useClassNames2.withClassPrefix,
73
+ mergeMenuClassName = _useClassNames2.merge;
74
+
75
+ return /*#__PURE__*/_react.default.createElement(_Disclosure.default, {
76
+ trigger: trigger,
77
+ hideOnClickOutside: true,
78
+ onToggle: function onToggle(open) {
79
+ _onToggle === null || _onToggle === void 0 ? void 0 : _onToggle(open);
80
+
81
+ if (open) {
82
+ onOpen === null || onOpen === void 0 ? void 0 : onOpen();
83
+ } else {
84
+ onClose === null || onClose === void 0 ? void 0 : onClose();
85
+ }
86
+ }
87
+ }, function (_ref, containerRef) {
88
+ var _withClassPrefix;
89
+
90
+ var open = _ref.open;
91
+ var classes = merge(className, withClassPrefix((_withClassPrefix = {}, _withClassPrefix["placement-" + (0, _kebabCase.default)((0, _utils.placementPolyfill)(placement))] = !!placement, _withClassPrefix.disabled = disabled, _withClassPrefix.open = open, _withClassPrefix)));
92
+ return /*#__PURE__*/_react.default.createElement(Component, {
93
+ ref: (0, _utils.mergeRefs)(ref, containerRef),
94
+ className: classes,
95
+ style: style
96
+ }, /*#__PURE__*/_react.default.createElement(_Disclosure.default.Button, null, function (buttonProps, buttonRef) {
97
+ return /*#__PURE__*/_react.default.createElement(_NavbarDropdownToggle.default, (0, _extends2.default)({
98
+ ref: buttonRef,
99
+ as: toggleAs,
100
+ className: toggleClassName,
101
+ placement: placement,
102
+ disabled: disabled
103
+ }, (0, _omit.default)(buttonProps, ['open']), toggleProps), title);
104
+ }), /*#__PURE__*/_react.default.createElement(_Disclosure.default.Content, null, function (_ref2, elementRef) {
105
+ var open = _ref2.open;
106
+ var menuClassName = mergeMenuClassName(className, withMenuClassPrefix());
107
+ return /*#__PURE__*/_react.default.createElement("ul", {
108
+ ref: elementRef,
109
+ className: menuClassName,
110
+ style: menuStyle,
111
+ hidden: !open
112
+ }, children);
113
+ }));
114
+ });
115
+ });
116
+
117
+ NavbarDropdown.Item = _NavDropdownItem.default;
118
+ NavbarDropdown.Menu = _NavDropdownMenu.default;
119
+ NavbarDropdown.displayName = 'Navbar.Dropdown';
120
+ NavbarDropdown.propTypes = {
121
+ classPrefix: _propTypes.default.string,
122
+ trigger: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.oneOf(['click', 'hover', 'contextMenu'])]),
123
+ placement: _propTypes.default.oneOf(_utils.PLACEMENT_8),
124
+ title: _propTypes.default.node,
125
+ disabled: _propTypes.default.bool,
126
+ icon: _propTypes.default.node,
127
+ menuStyle: _propTypes.default.object,
128
+ className: _propTypes.default.string,
129
+ toggleClassName: _propTypes.default.string,
130
+ children: _propTypes.default.node,
131
+ open: (0, _deprecatePropType.default)(_propTypes.default.bool),
132
+ eventKey: _propTypes.default.any,
133
+ as: _propTypes.default.elementType,
134
+ toggleAs: _propTypes.default.elementType,
135
+ noCaret: _propTypes.default.bool,
136
+ style: _propTypes.default.object,
137
+ onClose: _propTypes.default.func,
138
+ onOpen: _propTypes.default.func,
139
+ onToggle: _propTypes.default.func,
140
+ onMouseEnter: _propTypes.default.func,
141
+ onMouseLeave: _propTypes.default.func,
142
+ onContextMenu: _propTypes.default.func,
143
+ onClick: _propTypes.default.func,
144
+ renderToggle: _propTypes.default.func
145
+ };
146
+ var _default = NavbarDropdown;
147
+ exports.default = _default;
@@ -0,0 +1,41 @@
1
+ import { RsRefForwardingComponent, WithAsProps } from '../@types/common';
2
+ import React from 'react';
3
+ import { IconProps } from '@rsuite/icons/lib/Icon';
4
+ export interface NavbarDropdownItemProps<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
+ /** The submenu that this menuitem controls (if exists) */
22
+ submenu?: React.ReactElement;
23
+ /**
24
+ * The sub-level menu appears from the right side by default, and when `pullLeft` is set, it appears from the left.
25
+ * @deprecated Submenus are now pointing the same direction.
26
+ */
27
+ pullLeft?: boolean;
28
+ /**
29
+ * Whether the submenu is opened.
30
+ * @deprecated
31
+ * @internal
32
+ */
33
+ open?: boolean;
34
+ /** Select the callback function for the current option */
35
+ onSelect?: (eventKey: T, event: React.SyntheticEvent) => void;
36
+ }
37
+ /**
38
+ * @private
39
+ */
40
+ declare const NavbarDropdownItem: RsRefForwardingComponent<'li', NavbarDropdownItemProps>;
41
+ export default NavbarDropdownItem;
@@ -0,0 +1,149 @@
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 _isNil = _interopRequireDefault(require("lodash/isNil"));
21
+
22
+ var _utils = require("../utils");
23
+
24
+ var _Navbar = require("./Navbar");
25
+
26
+ var _DisclosureContext = _interopRequireWildcard(require("../Disclosure/DisclosureContext"));
27
+
28
+ var _useRenderDropdownItem = require("../Dropdown/useRenderDropdownItem");
29
+
30
+ var _NavContext = _interopRequireDefault(require("../Nav/NavContext"));
31
+
32
+ /**
33
+ * @private
34
+ */
35
+ var NavbarDropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
36
+ var navbar = (0, _react.useContext)(_Navbar.NavbarContext);
37
+ var nav = (0, _react.useContext)(_NavContext.default);
38
+
39
+ if (!navbar || !nav) {
40
+ throw new Error('<Navbar.Dropdown.Item> must be rendered within a <Nav> component within a <Navbar> component.');
41
+ }
42
+
43
+ var _props$classPrefix = props.classPrefix,
44
+ classPrefix = _props$classPrefix === void 0 ? 'dropdown-item' : _props$classPrefix,
45
+ className = props.className,
46
+ activeProp = props.active,
47
+ eventKey = props.eventKey,
48
+ onSelect = props.onSelect,
49
+ icon = props.icon,
50
+ _props$as = props.as,
51
+ Component = _props$as === void 0 ? 'li' : _props$as,
52
+ divider = props.divider,
53
+ panel = props.panel,
54
+ children = props.children,
55
+ disabled = props.disabled,
56
+ restProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["classPrefix", "className", "active", "eventKey", "onSelect", "icon", "as", "divider", "panel", "children", "disabled"]);
57
+
58
+ var _useClassNames = (0, _utils.useClassNames)(classPrefix),
59
+ merge = _useClassNames.merge,
60
+ withClassPrefix = _useClassNames.withClassPrefix,
61
+ prefix = _useClassNames.prefix;
62
+
63
+ var handleSelectItem = (0, _react.useCallback)(function (event) {
64
+ var _nav$onSelect;
65
+
66
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(eventKey, event);
67
+ (_nav$onSelect = nav.onSelect) === null || _nav$onSelect === void 0 ? void 0 : _nav$onSelect.call(nav, eventKey, event);
68
+ }, [onSelect, eventKey, nav]);
69
+ var disclosure = (0, _react.useContext)(_DisclosureContext.default);
70
+
71
+ var _ref = disclosure !== null && disclosure !== void 0 ? disclosure : [],
72
+ dispatchDisclosure = _ref[1];
73
+
74
+ var handleClickNavbarDropdownItem = (0, _react.useCallback)(function (event) {
75
+ dispatchDisclosure === null || dispatchDisclosure === void 0 ? void 0 : dispatchDisclosure({
76
+ type: _DisclosureContext.DisclosureActionTypes.Hide,
77
+ cascade: true
78
+ });
79
+ handleSelectItem === null || handleSelectItem === void 0 ? void 0 : handleSelectItem(event);
80
+ }, [dispatchDisclosure, handleSelectItem]);
81
+ var selected = activeProp || !(0, _isNil.default)(eventKey) && (0, _utils.shallowEqual)(nav.activeKey, eventKey);
82
+ var renderDropdownItem = (0, _useRenderDropdownItem.useRenderDropdownItem)(Component);
83
+
84
+ if (divider) {
85
+ return renderDropdownItem((0, _extends2.default)({
86
+ ref: ref,
87
+ role: 'separator',
88
+ className: merge(prefix('divider'), className)
89
+ }, restProps));
90
+ }
91
+
92
+ if (panel) {
93
+ return renderDropdownItem((0, _extends2.default)({
94
+ ref: ref,
95
+ className: merge(prefix('panel'), className),
96
+ children: children
97
+ }, restProps));
98
+ }
99
+
100
+ var classes = merge(className, withClassPrefix({
101
+ 'with-icon': icon,
102
+ disabled: disabled,
103
+ divider: divider,
104
+ panel: panel,
105
+ active: selected
106
+ }));
107
+ var dataAttributes = {
108
+ 'data-event-key': eventKey
109
+ };
110
+
111
+ if (!(0, _isNil.default)(eventKey) && typeof eventKey !== 'string') {
112
+ dataAttributes['data-event-key-type'] = typeof eventKey;
113
+ }
114
+
115
+ return renderDropdownItem((0, _extends2.default)({
116
+ ref: ref,
117
+ className: classes,
118
+ 'aria-current': selected || undefined
119
+ }, dataAttributes, restProps, {
120
+ onClick: (0, _utils.createChainedFunction)(handleClickNavbarDropdownItem, restProps.onClick),
121
+ children: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, icon && /*#__PURE__*/_react.default.cloneElement(icon, {
122
+ className: prefix('menu-icon')
123
+ }), children)
124
+ }));
125
+ });
126
+
127
+ NavbarDropdownItem.displayName = 'Navbar.Dropdown.Item';
128
+ NavbarDropdownItem.propTypes = {
129
+ as: _propTypes.default.elementType,
130
+ divider: _propTypes.default.bool,
131
+ panel: _propTypes.default.bool,
132
+ trigger: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.oneOf(['click', 'hover'])]),
133
+ open: (0, _deprecatePropType.default)(_propTypes.default.bool),
134
+ active: _propTypes.default.bool,
135
+ disabled: _propTypes.default.bool,
136
+ pullLeft: (0, _deprecatePropType.default)(_propTypes.default.bool),
137
+ submenu: _propTypes.default.element,
138
+ onSelect: _propTypes.default.func,
139
+ onClick: _propTypes.default.func,
140
+ icon: _propTypes.default.node,
141
+ eventKey: _propTypes.default.any,
142
+ className: _propTypes.default.string,
143
+ style: _propTypes.default.object,
144
+ children: _propTypes.default.node,
145
+ classPrefix: _propTypes.default.string,
146
+ tabIndex: _propTypes.default.number
147
+ };
148
+ var _default = NavbarDropdownItem;
149
+ exports.default = _default;
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ import { StandardProps } from '../@types/common';
3
+ import { IconProps } from '@rsuite/icons/lib/Icon';
4
+ export interface NavbarDropdownMenuProps<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
+ activeKey?: T;
21
+ onToggle?: (open: boolean, eventKey?: T | undefined, event?: React.SyntheticEvent) => void;
22
+ }
23
+ /**
24
+ * @private this component is not supposed to be used directly
25
+ * Instead it's rendered by a <Nav.Menu> within a <Navbar>
26
+ *
27
+ * <Navbar>
28
+ * <Nav>
29
+ * <Nav.Menu>
30
+ * <Nav.Menu title="menu"> -> This submenu will render <NavbarDropdownMenu> component
31
+ * </Nav.Menu>
32
+ * </Nav.Menu>
33
+ * </Nav>
34
+ * </Navbar>
35
+ */
36
+ declare const NavbarDropdownMenu: React.ForwardRefExoticComponent<NavbarDropdownMenuProps<any> & Omit<React.HTMLAttributes<HTMLUListElement>, "title" | "onSelect"> & React.RefAttributes<HTMLElement>>;
37
+ export default NavbarDropdownMenu;
@@ -0,0 +1,155 @@
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 _omit2 = _interopRequireDefault(require("lodash/omit"));
19
+
20
+ var _utils = require("../utils");
21
+
22
+ var _propTypes = _interopRequireDefault(require("prop-types"));
23
+
24
+ var _AngleLeft = _interopRequireDefault(require("@rsuite/icons/legacy/AngleLeft"));
25
+
26
+ var _AngleRight = _interopRequireDefault(require("@rsuite/icons/legacy/AngleRight"));
27
+
28
+ var _useCustom2 = _interopRequireDefault(require("../utils/useCustom"));
29
+
30
+ var _ = require(".");
31
+
32
+ var _Disclosure = _interopRequireDefault(require("../Disclosure"));
33
+
34
+ var _NavContext = _interopRequireDefault(require("../Nav/NavContext"));
35
+
36
+ var _templateObject, _templateObject2;
37
+
38
+ /**
39
+ * @private this component is not supposed to be used directly
40
+ * Instead it's rendered by a <Nav.Menu> within a <Navbar>
41
+ *
42
+ * <Navbar>
43
+ * <Nav>
44
+ * <Nav.Menu>
45
+ * <Nav.Menu title="menu"> -> This submenu will render <NavbarDropdownMenu> component
46
+ * </Nav.Menu>
47
+ * </Nav.Menu>
48
+ * </Nav>
49
+ * </Navbar>
50
+ */
51
+ var NavbarDropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
52
+ var navbar = (0, _react.useContext)(_.NavbarContext);
53
+ var nav = (0, _react.useContext)(_NavContext.default);
54
+
55
+ if (!navbar || !nav) {
56
+ throw new Error('<Navbar.Dropdown.Menu> must be rendered within a <Nav> within a <Navbar> component.');
57
+ }
58
+
59
+ var _onToggle = props.onToggle,
60
+ eventKey = props.eventKey,
61
+ title = props.title,
62
+ _props$classPrefix = props.classPrefix,
63
+ classPrefix = _props$classPrefix === void 0 ? 'dropdown-menu' : _props$classPrefix,
64
+ children = props.children,
65
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["onToggle", "eventKey", "title", "classPrefix", "children"]);
66
+
67
+ var _useCustom = (0, _useCustom2.default)('DropdownMenu'),
68
+ rtl = _useCustom.rtl;
69
+
70
+ var _useClassNames = (0, _utils.useClassNames)(classPrefix),
71
+ prefix = _useClassNames.prefix;
72
+
73
+ var _useClassNames2 = (0, _utils.useClassNames)('dropdown-menu'),
74
+ withMenuClassPrefix = _useClassNames2.withClassPrefix,
75
+ mergeMenuClassName = _useClassNames2.merge;
76
+
77
+ var _useClassNames3 = (0, _utils.useClassNames)('dropdown-item'),
78
+ mergeItemClassNames = _useClassNames3.merge,
79
+ withItemClassPrefix = _useClassNames3.withClassPrefix,
80
+ prefixItemClassName = _useClassNames3.prefix; // Parent menu exists. This is a submenu.
81
+ // Should render a `menuitem` that controls this submenu.
82
+
83
+
84
+ var _omit = (0, _omit2.default)(rest, ['trigger']),
85
+ icon = _omit.icon,
86
+ className = _omit.className,
87
+ disabled = _omit.disabled,
88
+ menuProps = (0, _objectWithoutPropertiesLoose2.default)(_omit, ["icon", "className", "disabled"]);
89
+
90
+ var Icon = rtl ? _AngleLeft.default : _AngleRight.default;
91
+ return /*#__PURE__*/_react.default.createElement(_Disclosure.default, {
92
+ hideOnClickOutside: true,
93
+ trigger: ['click', 'mouseover'],
94
+ onToggle: function onToggle(open, event) {
95
+ return _onToggle === null || _onToggle === void 0 ? void 0 : _onToggle(open, undefined, event);
96
+ }
97
+ }, function (_ref, containerRef) {
98
+ var open = _ref.open,
99
+ props = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["open"]);
100
+ var classes = mergeItemClassNames(className, withItemClassPrefix({
101
+ disabled: disabled,
102
+ open: open,
103
+ submenu: true
104
+ }));
105
+ return /*#__PURE__*/_react.default.createElement("li", (0, _extends2.default)({
106
+ ref: (0, _utils.mergeRefs)(ref, containerRef),
107
+ className: classes
108
+ }, props), /*#__PURE__*/_react.default.createElement(_Disclosure.default.Button, null, function (_ref2, buttonRef) {
109
+ var open = _ref2.open,
110
+ buttonProps = (0, _objectWithoutPropertiesLoose2.default)(_ref2, ["open"]);
111
+ var classes = mergeItemClassNames(className, prefixItemClassName(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["toggle"]))), withItemClassPrefix({
112
+ 'with-icon': icon,
113
+ open: open,
114
+ disabled: disabled
115
+ }));
116
+ return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
117
+ ref: (0, _utils.mergeRefs)(buttonRef, buttonRef),
118
+ className: classes,
119
+ "data-event-key": eventKey,
120
+ "data-event-key-type": typeof eventKey
121
+ }, buttonProps), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
122
+ className: prefix('menu-icon')
123
+ }), title, /*#__PURE__*/_react.default.createElement(Icon, {
124
+ className: prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["toggle-icon"])))
125
+ }));
126
+ }), /*#__PURE__*/_react.default.createElement(_Disclosure.default.Content, null, function (_ref3, elementRef) {
127
+ var open = _ref3.open;
128
+ var menuClassName = mergeMenuClassName(className, withMenuClassPrefix());
129
+ return /*#__PURE__*/_react.default.createElement("ul", (0, _extends2.default)({
130
+ ref: elementRef,
131
+ className: menuClassName,
132
+ hidden: !open
133
+ }, menuProps), children);
134
+ }));
135
+ });
136
+ });
137
+
138
+ NavbarDropdownMenu.displayName = 'Nav.Dropdown.Menu';
139
+ NavbarDropdownMenu.propTypes = {
140
+ active: _propTypes.default.bool,
141
+ activeKey: _propTypes.default.any,
142
+ className: _propTypes.default.string,
143
+ children: _propTypes.default.node,
144
+ icon: _propTypes.default.any,
145
+ classPrefix: _propTypes.default.string,
146
+ pullLeft: _propTypes.default.bool,
147
+ title: _propTypes.default.node,
148
+ open: _propTypes.default.bool,
149
+ eventKey: _propTypes.default.any,
150
+ expanded: _propTypes.default.bool,
151
+ collapsible: _propTypes.default.bool,
152
+ onToggle: _propTypes.default.func
153
+ };
154
+ var _default = NavbarDropdownMenu;
155
+ 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 NavbarDropdownToggleProps 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 NavbarDropdownToggle: RsRefForwardingComponent<typeof Button, NavbarDropdownToggleProps>;
19
+ export default NavbarDropdownToggle;
@@ -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 _NavbarItem = _interopRequireDefault(require("./NavbarItem"));
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 NavbarDropdownToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
32
+ var _props$as = props.as,
33
+ Component = _props$as === void 0 ? _NavbarItem.default : _props$as,
34
+ className = props.className,
35
+ _props$classPrefix = props.classPrefix,
36
+ classPrefix = _props$classPrefix === void 0 ? 'navbar-item' : _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
+ NavbarDropdownToggle.displayName = 'Navbar.Dropdown.Toggle';
62
+ NavbarDropdownToggle.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 = NavbarDropdownToggle;
72
+ exports.default = _default;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { IconProps } from '@rsuite/icons/lib/Icon';
3
3
  import { RsRefForwardingComponent, WithAsProps } from '../@types/common';
4
- export interface NavItemProps<T = string> extends WithAsProps, Omit<React.HTMLAttributes<HTMLElement>, 'onSelect'> {
4
+ export interface NavbarItemProps<T = string> extends WithAsProps, Omit<React.HTMLAttributes<HTMLElement>, 'onSelect'> {
5
5
  /** Activation status */
6
6
  active?: boolean;
7
7
  /** Disabled status */
@@ -15,5 +15,8 @@ export interface NavItemProps<T = string> extends WithAsProps, Omit<React.HTMLAt
15
15
  /** Select the callback function that the event triggers. */
16
16
  onSelect?: (eventKey: T | undefined, event: React.SyntheticEvent) => void;
17
17
  }
18
- declare const NavbarItem: RsRefForwardingComponent<'a', NavItemProps>;
18
+ /**
19
+ * @private
20
+ */
21
+ declare const NavbarItem: RsRefForwardingComponent<'a', NavbarItemProps>;
19
22
  export default NavbarItem;