rsuite 5.12.0 → 5.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/Button/styles/index.less +1 -0
  2. package/CHANGELOG.md +49 -0
  3. package/Dropdown/styles/index.less +8 -3
  4. package/Grid/styles/index.less +42 -10
  5. package/Nav/styles/index.less +7 -1
  6. package/Navbar/styles/index.less +6 -1
  7. package/Sidenav/styles/index.less +52 -16
  8. package/Table/styles/index.less +0 -2
  9. package/Tooltip/styles/index.less +4 -4
  10. package/cjs/@types/common.d.ts +6 -0
  11. package/cjs/Cascader/DropdownMenu.js +8 -3
  12. package/cjs/Cascader/utils.d.ts +1 -1
  13. package/cjs/Col/Col.d.ts +25 -5
  14. package/cjs/Col/Col.js +9 -1
  15. package/cjs/CustomProvider/CustomProvider.d.ts +20 -7
  16. package/cjs/CustomProvider/CustomProvider.js +24 -3
  17. package/cjs/Disclosure/Disclosure.d.ts +1 -1
  18. package/cjs/Disclosure/DisclosureContext.d.ts +1 -1
  19. package/cjs/Dropdown/Dropdown.js +26 -110
  20. package/cjs/Dropdown/DropdownItem.js +14 -58
  21. package/cjs/Dropdown/DropdownMenu.js +32 -76
  22. package/cjs/Dropdown/DropdownToggle.js +4 -17
  23. package/cjs/Dropdown/useRenderDropdownItem.d.ts +1 -1
  24. package/cjs/Form/Form.d.ts +8 -8
  25. package/cjs/Form/test/Form.test.d.ts +1 -0
  26. package/cjs/Form/test/Form.test.js +18 -0
  27. package/cjs/Menu/Menu.d.ts +1 -0
  28. package/cjs/Menu/Menu.js +1 -0
  29. package/cjs/Menu/MenuItem.d.ts +1 -0
  30. package/cjs/Menu/MenuItem.js +1 -0
  31. package/cjs/Menu/Menubar.d.ts +3 -0
  32. package/cjs/Menu/Menubar.js +4 -0
  33. package/cjs/Modal/test/Modal.test.d.ts +1 -0
  34. package/cjs/Modal/test/Modal.test.js +14 -0
  35. package/cjs/Modal/utils.d.ts +1 -1
  36. package/cjs/Nav/Nav.d.ts +7 -2
  37. package/cjs/Nav/Nav.js +105 -5
  38. package/cjs/Nav/NavContext.d.ts +2 -8
  39. package/cjs/Nav/NavContext.js +1 -7
  40. package/cjs/Nav/NavDropdown.d.ts +71 -0
  41. package/cjs/Nav/NavDropdown.js +193 -0
  42. package/cjs/Nav/NavDropdownItem.d.ts +39 -0
  43. package/cjs/Nav/NavDropdownItem.js +141 -0
  44. package/cjs/Nav/NavDropdownMenu.d.ts +37 -0
  45. package/cjs/Nav/NavDropdownMenu.js +162 -0
  46. package/cjs/Nav/NavDropdownToggle.d.ts +21 -0
  47. package/cjs/Nav/NavDropdownToggle.js +74 -0
  48. package/cjs/Nav/NavItem.d.ts +2 -0
  49. package/cjs/Nav/NavItem.js +13 -26
  50. package/cjs/Nav/NavMenu.d.ts +38 -0
  51. package/cjs/Nav/NavMenu.js +122 -0
  52. package/cjs/Nav/test/Nav.test.d.ts +1 -0
  53. package/cjs/Nav/test/Nav.test.js +17 -0
  54. package/cjs/Navbar/NavbarDropdown.d.ts +57 -0
  55. package/cjs/Navbar/NavbarDropdown.js +147 -0
  56. package/cjs/Navbar/NavbarDropdownItem.d.ts +41 -0
  57. package/cjs/Navbar/NavbarDropdownItem.js +149 -0
  58. package/cjs/Navbar/NavbarDropdownMenu.d.ts +48 -0
  59. package/cjs/Navbar/NavbarDropdownMenu.js +161 -0
  60. package/cjs/Navbar/NavbarDropdownToggle.d.ts +19 -0
  61. package/cjs/Navbar/NavbarDropdownToggle.js +72 -0
  62. package/cjs/Navbar/NavbarItem.d.ts +5 -2
  63. package/cjs/Navbar/NavbarItem.js +10 -4
  64. package/cjs/Overlay/Modal.d.ts +1 -4
  65. package/cjs/Overlay/Overlay.d.ts +3 -1
  66. package/cjs/Overlay/Overlay.js +6 -2
  67. package/cjs/Overlay/OverlayTrigger.d.ts +8 -4
  68. package/cjs/Overlay/OverlayTrigger.js +32 -4
  69. package/cjs/Overlay/Position.d.ts +3 -1
  70. package/cjs/Overlay/Position.js +12 -4
  71. package/cjs/Overlay/positionUtils.d.ts +11 -4
  72. package/cjs/Overlay/positionUtils.js +48 -2
  73. package/cjs/Panel/Panel.js +9 -6
  74. package/cjs/Picker/utils.d.ts +1 -1
  75. package/cjs/Picker/utils.js +22 -15
  76. package/cjs/Popover/Popover.d.ts +2 -0
  77. package/cjs/Popover/Popover.js +6 -3
  78. package/cjs/Sidenav/ExpandedSidenavDropdown.d.ts +43 -0
  79. package/cjs/Sidenav/ExpandedSidenavDropdown.js +166 -0
  80. package/cjs/Sidenav/ExpandedSidenavDropdownItem.d.ts +31 -0
  81. package/cjs/Sidenav/ExpandedSidenavDropdownItem.js +141 -0
  82. package/cjs/Sidenav/ExpandedSidenavDropdownMenu.d.ts +26 -0
  83. package/cjs/Sidenav/ExpandedSidenavDropdownMenu.js +145 -0
  84. package/cjs/Sidenav/Sidenav.d.ts +8 -2
  85. package/cjs/Sidenav/Sidenav.js +1 -2
  86. package/cjs/Sidenav/SidenavDropdown.d.ts +30 -8
  87. package/cjs/Sidenav/SidenavDropdown.js +144 -73
  88. package/cjs/Sidenav/SidenavDropdownItem.d.ts +22 -5
  89. package/cjs/Sidenav/SidenavDropdownItem.js +88 -72
  90. package/cjs/Sidenav/SidenavDropdownMenu.d.ts +26 -16
  91. package/cjs/Sidenav/SidenavDropdownMenu.js +122 -90
  92. package/cjs/Sidenav/SidenavDropdownToggle.d.ts +19 -0
  93. package/cjs/Sidenav/SidenavDropdownToggle.js +73 -0
  94. package/cjs/Sidenav/SidenavItem.d.ts +7 -0
  95. package/cjs/Sidenav/SidenavItem.js +54 -37
  96. package/cjs/Sidenav/SidenavToggle.d.ts +5 -1
  97. package/cjs/Sidenav/SidenavToggle.js +25 -9
  98. package/cjs/Toggle/Toggle.d.ts +1 -1
  99. package/cjs/Tooltip/Tooltip.d.ts +3 -1
  100. package/cjs/Tooltip/Tooltip.js +8 -3
  101. package/cjs/Whisper/Whisper.d.ts +3 -5
  102. package/cjs/Whisper/Whisper.js +6 -1
  103. package/cjs/Whisper/test/Whisper.test.d.ts +1 -0
  104. package/cjs/Whisper/test/Whisper.test.js +23 -0
  105. package/cjs/index.d.ts +3 -3
  106. package/cjs/index.js +3 -2
  107. package/cjs/toaster/ToastContainer.d.ts +1 -0
  108. package/cjs/toaster/ToastContainer.js +4 -1
  109. package/cjs/toaster/index.d.ts +1 -0
  110. package/cjs/toaster/index.js +4 -1
  111. package/cjs/toaster/toaster.d.ts +0 -1
  112. package/cjs/toaster/useToaster.d.ts +12 -0
  113. package/cjs/toaster/useToaster.js +43 -0
  114. package/cjs/utils/constants.d.ts +1 -0
  115. package/cjs/utils/constants.js +3 -1
  116. package/cjs/utils/deprecateComponent.js +4 -6
  117. package/cjs/utils/deprecatePropType.d.ts +1 -5
  118. package/cjs/utils/deprecatePropType.js +7 -14
  119. package/cjs/utils/stringToObject.d.ts +1 -1
  120. package/cjs/utils/tplTransform.d.ts +1 -1
  121. package/cjs/utils/treeUtils.d.ts +3 -3
  122. package/cjs/utils/treeUtils.js +8 -10
  123. package/cjs/utils/useCustom.d.ts +1 -1
  124. package/cjs/utils/useCustom.js +5 -3
  125. package/cjs/utils/useFocus.d.ts +1 -1
  126. package/cjs/utils/useInternalId.d.ts +1 -1
  127. package/cjs/utils/useInternalId.js +2 -2
  128. package/cjs/utils/warnOnce.d.ts +9 -0
  129. package/cjs/utils/warnOnce.js +22 -0
  130. package/dist/rsuite-rtl.css +735 -56
  131. package/dist/rsuite-rtl.min.css +1 -1
  132. package/dist/rsuite-rtl.min.css.map +1 -1
  133. package/dist/rsuite.css +735 -56
  134. package/dist/rsuite.js +363 -121
  135. package/dist/rsuite.js.map +1 -1
  136. package/dist/rsuite.min.css +1 -1
  137. package/dist/rsuite.min.css.map +1 -1
  138. package/dist/rsuite.min.js +1 -1
  139. package/dist/rsuite.min.js.map +1 -1
  140. package/esm/@types/common.d.ts +6 -0
  141. package/esm/Cascader/DropdownMenu.js +8 -3
  142. package/esm/Cascader/utils.d.ts +1 -1
  143. package/esm/Col/Col.d.ts +25 -5
  144. package/esm/Col/Col.js +10 -2
  145. package/esm/CustomProvider/CustomProvider.d.ts +20 -7
  146. package/esm/CustomProvider/CustomProvider.js +22 -3
  147. package/esm/Disclosure/Disclosure.d.ts +1 -1
  148. package/esm/Disclosure/DisclosureContext.d.ts +1 -1
  149. package/esm/Dropdown/Dropdown.js +25 -105
  150. package/esm/Dropdown/DropdownItem.js +13 -55
  151. package/esm/Dropdown/DropdownMenu.js +31 -76
  152. package/esm/Dropdown/DropdownToggle.js +4 -14
  153. package/esm/Dropdown/useRenderDropdownItem.d.ts +1 -1
  154. package/esm/Form/Form.d.ts +8 -8
  155. package/esm/Form/test/Form.test.d.ts +1 -0
  156. package/esm/Form/test/Form.test.js +11 -0
  157. package/esm/Menu/Menu.d.ts +1 -0
  158. package/esm/Menu/Menu.js +1 -0
  159. package/esm/Menu/MenuItem.d.ts +1 -0
  160. package/esm/Menu/MenuItem.js +1 -0
  161. package/esm/Menu/Menubar.d.ts +3 -0
  162. package/esm/Menu/Menubar.js +4 -0
  163. package/esm/Modal/test/Modal.test.d.ts +1 -0
  164. package/esm/Modal/test/Modal.test.js +9 -0
  165. package/esm/Modal/utils.d.ts +1 -1
  166. package/esm/Nav/Nav.d.ts +7 -2
  167. package/esm/Nav/Nav.js +96 -5
  168. package/esm/Nav/NavContext.d.ts +2 -8
  169. package/esm/Nav/NavContext.js +1 -6
  170. package/esm/Nav/NavDropdown.d.ts +71 -0
  171. package/esm/Nav/NavDropdown.js +170 -0
  172. package/esm/Nav/NavDropdownItem.d.ts +39 -0
  173. package/esm/Nav/NavDropdownItem.js +123 -0
  174. package/esm/Nav/NavDropdownMenu.d.ts +37 -0
  175. package/esm/Nav/NavDropdownMenu.js +143 -0
  176. package/esm/Nav/NavDropdownToggle.d.ts +21 -0
  177. package/esm/Nav/NavDropdownToggle.js +57 -0
  178. package/esm/Nav/NavItem.d.ts +2 -0
  179. package/esm/Nav/NavItem.js +13 -21
  180. package/esm/Nav/NavMenu.d.ts +38 -0
  181. package/esm/Nav/NavMenu.js +98 -0
  182. package/esm/Nav/test/Nav.test.d.ts +1 -0
  183. package/esm/Nav/test/Nav.test.js +11 -0
  184. package/esm/Navbar/NavbarDropdown.d.ts +57 -0
  185. package/esm/Navbar/NavbarDropdown.js +124 -0
  186. package/esm/Navbar/NavbarDropdownItem.d.ts +41 -0
  187. package/esm/Navbar/NavbarDropdownItem.js +128 -0
  188. package/esm/Navbar/NavbarDropdownMenu.d.ts +48 -0
  189. package/esm/Navbar/NavbarDropdownMenu.js +140 -0
  190. package/esm/Navbar/NavbarDropdownToggle.d.ts +19 -0
  191. package/esm/Navbar/NavbarDropdownToggle.js +55 -0
  192. package/esm/Navbar/NavbarItem.d.ts +5 -2
  193. package/esm/Navbar/NavbarItem.js +11 -4
  194. package/esm/Overlay/Modal.d.ts +1 -4
  195. package/esm/Overlay/Overlay.d.ts +3 -1
  196. package/esm/Overlay/Overlay.js +6 -2
  197. package/esm/Overlay/OverlayTrigger.d.ts +8 -4
  198. package/esm/Overlay/OverlayTrigger.js +33 -5
  199. package/esm/Overlay/Position.d.ts +3 -1
  200. package/esm/Overlay/Position.js +12 -4
  201. package/esm/Overlay/positionUtils.d.ts +11 -4
  202. package/esm/Overlay/positionUtils.js +46 -2
  203. package/esm/Panel/Panel.js +9 -6
  204. package/esm/Picker/utils.d.ts +1 -1
  205. package/esm/Picker/utils.js +22 -14
  206. package/esm/Popover/Popover.d.ts +2 -0
  207. package/esm/Popover/Popover.js +6 -3
  208. package/esm/Sidenav/ExpandedSidenavDropdown.d.ts +43 -0
  209. package/esm/Sidenav/ExpandedSidenavDropdown.js +140 -0
  210. package/esm/Sidenav/ExpandedSidenavDropdownItem.d.ts +31 -0
  211. package/esm/Sidenav/ExpandedSidenavDropdownItem.js +120 -0
  212. package/esm/Sidenav/ExpandedSidenavDropdownMenu.d.ts +26 -0
  213. package/esm/Sidenav/ExpandedSidenavDropdownMenu.js +121 -0
  214. package/esm/Sidenav/Sidenav.d.ts +8 -2
  215. package/esm/Sidenav/Sidenav.js +1 -2
  216. package/esm/Sidenav/SidenavDropdown.d.ts +30 -8
  217. package/esm/Sidenav/SidenavDropdown.js +145 -75
  218. package/esm/Sidenav/SidenavDropdownItem.d.ts +22 -5
  219. package/esm/Sidenav/SidenavDropdownItem.js +87 -71
  220. package/esm/Sidenav/SidenavDropdownMenu.d.ts +26 -16
  221. package/esm/Sidenav/SidenavDropdownMenu.js +122 -86
  222. package/esm/Sidenav/SidenavDropdownToggle.d.ts +19 -0
  223. package/esm/Sidenav/SidenavDropdownToggle.js +56 -0
  224. package/esm/Sidenav/SidenavItem.d.ts +7 -0
  225. package/esm/Sidenav/SidenavItem.js +53 -38
  226. package/esm/Sidenav/SidenavToggle.d.ts +5 -1
  227. package/esm/Sidenav/SidenavToggle.js +22 -9
  228. package/esm/Toggle/Toggle.d.ts +1 -1
  229. package/esm/Tooltip/Tooltip.d.ts +3 -1
  230. package/esm/Tooltip/Tooltip.js +8 -3
  231. package/esm/Whisper/Whisper.d.ts +3 -5
  232. package/esm/Whisper/Whisper.js +6 -1
  233. package/esm/Whisper/test/Whisper.test.d.ts +1 -0
  234. package/esm/Whisper/test/Whisper.test.js +16 -0
  235. package/esm/index.d.ts +3 -3
  236. package/esm/index.js +1 -1
  237. package/esm/toaster/ToastContainer.d.ts +1 -0
  238. package/esm/toaster/ToastContainer.js +1 -0
  239. package/esm/toaster/index.d.ts +1 -0
  240. package/esm/toaster/index.js +1 -0
  241. package/esm/toaster/toaster.d.ts +0 -1
  242. package/esm/toaster/useToaster.d.ts +12 -0
  243. package/esm/toaster/useToaster.js +34 -0
  244. package/esm/utils/constants.d.ts +1 -0
  245. package/esm/utils/constants.js +1 -0
  246. package/esm/utils/deprecateComponent.js +3 -4
  247. package/esm/utils/deprecatePropType.d.ts +1 -5
  248. package/esm/utils/deprecatePropType.js +3 -13
  249. package/esm/utils/stringToObject.d.ts +1 -1
  250. package/esm/utils/tplTransform.d.ts +1 -1
  251. package/esm/utils/treeUtils.d.ts +3 -3
  252. package/esm/utils/treeUtils.js +8 -10
  253. package/esm/utils/useCustom.d.ts +1 -1
  254. package/esm/utils/useCustom.js +5 -3
  255. package/esm/utils/useFocus.d.ts +1 -1
  256. package/esm/utils/useInternalId.d.ts +1 -1
  257. package/esm/utils/useInternalId.js +2 -2
  258. package/esm/utils/warnOnce.d.ts +9 -0
  259. package/esm/utils/warnOnce.js +18 -0
  260. package/package.json +1 -1
  261. package/styles/color-modes/dark.less +3 -0
  262. package/styles/color-modes/high-contrast.less +3 -0
  263. package/styles/color-modes/light.less +5 -2
  264. package/styles/variables.less +33 -12
@@ -25,8 +25,6 @@ var _utils = require("../utils");
25
25
 
26
26
  var _propTypes = _interopRequireDefault(require("prop-types"));
27
27
 
28
- var _Sidenav = require("../Sidenav/Sidenav");
29
-
30
28
  var _AngleLeft = _interopRequireDefault(require("@rsuite/icons/legacy/AngleLeft"));
31
29
 
32
30
  var _AngleRight = _interopRequireDefault(require("@rsuite/icons/legacy/AngleRight"));
@@ -35,15 +33,15 @@ var _useCustom2 = _interopRequireDefault(require("../utils/useCustom"));
35
33
 
36
34
  var _DropdownContext = _interopRequireDefault(require("./DropdownContext"));
37
35
 
38
- var _Navbar = require("../Navbar");
39
-
40
36
  var _Menubar = _interopRequireDefault(require("../Menu/Menubar"));
41
37
 
42
- var _SidenavDropdownMenu = _interopRequireDefault(require("../Sidenav/SidenavDropdownMenu"));
38
+ var _Nav = _interopRequireDefault(require("../Nav"));
39
+
40
+ var _NavContext = _interopRequireDefault(require("../Nav/NavContext"));
43
41
 
44
- var _Disclosure = _interopRequireDefault(require("../Disclosure"));
42
+ var _warnOnce = _interopRequireDefault(require("../utils/warnOnce"));
45
43
 
46
- var _templateObject, _templateObject2, _templateObject3, _templateObject4;
44
+ var _templateObject, _templateObject2;
47
45
 
48
46
  /**
49
47
  * The <Dropdown.Menu> API
@@ -73,9 +71,8 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
73
71
  classPrefix = _props$classPrefix === void 0 ? 'dropdown-menu' : _props$classPrefix,
74
72
  children = props.children,
75
73
  rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["onToggle", "eventKey", "title", "activeKey", "onSelect", "classPrefix", "children"]);
74
+ var nav = (0, _react.useContext)(_NavContext.default);
76
75
  var dropdown = (0, _react.useContext)(_DropdownContext.default);
77
- var sidenav = (0, _react.useContext)(_Sidenav.SidenavContext);
78
- var withinNavbar = Boolean((0, _react.useContext)(_Navbar.NavbarContext));
79
76
 
80
77
  var _useCustom = (0, _useCustom2.default)('DropdownMenu'),
81
78
  rtl = _useCustom.rtl;
@@ -103,9 +100,18 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
103
100
  activeKey: activeKey,
104
101
  onSelect: onSelect
105
102
  };
106
- }, [activeKey, onSelect]); // <Dropdown.Menu> is used outside of <Dropdown>
103
+ }, [activeKey, onSelect]); // If rendered within a <Nav>
104
+ // Suggest <Nav.Menu>
105
+
106
+ if (nav) {
107
+ (0, _warnOnce.default)('Usage of <Dropdown.Menu> within <Nav> is deprecated. Replace with <Nav.Menu>');
108
+ return /*#__PURE__*/_react.default.createElement(_Nav.default.Menu, (0, _extends2.default)({
109
+ ref: ref
110
+ }, props));
111
+ } // <Dropdown.Menu> is used outside of <Dropdown>
107
112
  // renders a vertical `menubar`
108
113
 
114
+
109
115
  if (!dropdown) {
110
116
  var classes = merge(props.className, withClassPrefix());
111
117
  return /*#__PURE__*/_react.default.createElement(_DropdownContext.default.Provider, {
@@ -118,10 +124,6 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
118
124
  className: classes
119
125
  }, menubar, rest), children);
120
126
  }));
121
- }
122
-
123
- if (sidenav !== null && sidenav !== void 0 && sidenav.expanded) {
124
- return /*#__PURE__*/_react.default.createElement(_SidenavDropdownMenu.default, (0, _omit2.default)(props, 'classPrefix'));
125
127
  } // Parent menu exists. This is a submenu.
126
128
  // Should render a `menuitem` that controls this submenu.
127
129
 
@@ -132,65 +134,19 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
132
134
  disabled = _omit.disabled,
133
135
  menuProps = (0, _objectWithoutPropertiesLoose2.default)(_omit, ["icon", "className", "disabled"]);
134
136
 
135
- var Icon = rtl ? _AngleLeft.default : _AngleRight.default; // Renders a disclosure when used within <Navbar>
136
-
137
- if (withinNavbar) {
138
- return /*#__PURE__*/_react.default.createElement(_Disclosure.default, {
139
- hideOnClickOutside: true,
140
- trigger: ['click', 'mouseover']
141
- }, function (_ref, containerRef) {
142
- var open = _ref.open,
143
- props = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["open"]);
144
- var classes = mergeItemClassNames(className, withItemClassPrefix({
145
- disabled: disabled,
146
- open: open,
147
- submenu: true
148
- }));
149
- return /*#__PURE__*/_react.default.createElement("li", (0, _extends2.default)({
150
- ref: (0, _utils.mergeRefs)(ref, containerRef),
151
- className: classes
152
- }, props), /*#__PURE__*/_react.default.createElement(_Disclosure.default.Button, null, function (_ref2, buttonRef) {
153
- var open = _ref2.open,
154
- buttonProps = (0, _objectWithoutPropertiesLoose2.default)(_ref2, ["open"]);
155
- var classes = mergeItemClassNames(className, prefixItemClassName(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["toggle"]))), withItemClassPrefix({
156
- 'with-icon': icon,
157
- open: open,
158
- disabled: disabled
159
- }));
160
- return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
161
- ref: (0, _utils.mergeRefs)(buttonRef, buttonRef),
162
- className: classes,
163
- "data-event-key": eventKey,
164
- "data-event-key-type": typeof eventKey
165
- }, buttonProps), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
166
- className: prefix('menu-icon')
167
- }), title, /*#__PURE__*/_react.default.createElement(Icon, {
168
- className: prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["toggle-icon"])))
169
- }));
170
- }), /*#__PURE__*/_react.default.createElement(_Disclosure.default.Content, null, function (_ref3, elementRef) {
171
- var open = _ref3.open;
172
- var menuClassName = mergeMenuClassName(className, withMenuClassPrefix());
173
- return /*#__PURE__*/_react.default.createElement("ul", (0, _extends2.default)({
174
- ref: elementRef,
175
- className: menuClassName,
176
- hidden: !open
177
- }, menuProps), children);
178
- }));
179
- });
180
- }
181
-
137
+ var Icon = rtl ? _AngleLeft.default : _AngleRight.default;
182
138
  return /*#__PURE__*/_react.default.createElement(_Menu.default, {
183
139
  openMenuOn: ['mouseover', 'click'],
184
- renderMenuButton: function renderMenuButton(_ref4, buttonRef) {
185
- var open = _ref4.open,
186
- menuButtonProps = (0, _objectWithoutPropertiesLoose2.default)(_ref4, ["open"]);
140
+ renderMenuButton: function renderMenuButton(_ref, buttonRef) {
141
+ var open = _ref.open,
142
+ menuButtonProps = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["open"]);
187
143
  return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
188
144
  disabled: disabled
189
- }, function (_ref5, menuitemRef) {
190
- var selected = _ref5.selected,
191
- active = _ref5.active,
192
- menuitem = (0, _objectWithoutPropertiesLoose2.default)(_ref5, ["selected", "active"]);
193
- var classes = mergeItemClassNames(className, prefixItemClassName(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["toggle"]))), withItemClassPrefix({
145
+ }, function (_ref2, menuitemRef) {
146
+ var selected = _ref2.selected,
147
+ active = _ref2.active,
148
+ menuitem = (0, _objectWithoutPropertiesLoose2.default)(_ref2, ["selected", "active"]);
149
+ var classes = mergeItemClassNames(className, prefixItemClassName(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["toggle"]))), withItemClassPrefix({
194
150
  'with-icon': icon,
195
151
  open: open,
196
152
  active: selected,
@@ -205,13 +161,13 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
205
161
  }, menuitem, (0, _omit2.default)(menuButtonProps, ['role'])), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
206
162
  className: prefix('menu-icon')
207
163
  }), title, /*#__PURE__*/_react.default.createElement(Icon, {
208
- className: prefix(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteralLoose2.default)(["toggle-icon"])))
164
+ className: prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["toggle-icon"])))
209
165
  }));
210
166
  });
211
167
  },
212
- renderMenuPopup: function renderMenuPopup(_ref6, popupRef) {
213
- var open = _ref6.open,
214
- popupProps = (0, _objectWithoutPropertiesLoose2.default)(_ref6, ["open"]);
168
+ renderMenuPopup: function renderMenuPopup(_ref3, popupRef) {
169
+ var open = _ref3.open,
170
+ popupProps = (0, _objectWithoutPropertiesLoose2.default)(_ref3, ["open"]);
215
171
  var menuClassName = mergeMenuClassName(className, withMenuClassPrefix());
216
172
  return /*#__PURE__*/_react.default.createElement("ul", (0, _extends2.default)({
217
173
  ref: popupRef,
@@ -220,9 +176,9 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
220
176
  }, popupProps, menuProps), children);
221
177
  },
222
178
  onToggleMenu: handleToggleSubmenu
223
- }, function (_ref7, menuContainerRef) {
224
- var open = _ref7.open,
225
- menuContainer = (0, _objectWithoutPropertiesLoose2.default)(_ref7, ["open"]);
179
+ }, function (_ref4, menuContainerRef) {
180
+ var open = _ref4.open,
181
+ menuContainer = (0, _objectWithoutPropertiesLoose2.default)(_ref4, ["open"]);
226
182
  var classes = mergeItemClassNames(className, withItemClassPrefix({
227
183
  disabled: disabled,
228
184
  open: open,
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
4
 
7
5
  exports.__esModule = true;
@@ -11,7 +9,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
9
 
12
10
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
13
11
 
14
- var _react = _interopRequireWildcard(require("react"));
12
+ var _react = _interopRequireDefault(require("react"));
15
13
 
16
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
17
15
 
@@ -21,10 +19,6 @@ var _utils = require("../utils");
21
19
 
22
20
  var _useToggleCaret = _interopRequireDefault(require("../utils/useToggleCaret"));
23
21
 
24
- var _Sidenav = require("../Sidenav/Sidenav");
25
-
26
- var _NavContext = _interopRequireDefault(require("../Nav/NavContext"));
27
-
28
22
  var DropdownToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
29
23
  var _props$as = props.as,
30
24
  Component = _props$as === void 0 ? _Button.default : _props$as,
@@ -38,10 +32,6 @@ var DropdownToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref
38
32
  _props$placement = props.placement,
39
33
  placement = _props$placement === void 0 ? 'bottomStart' : _props$placement,
40
34
  rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "renderToggle", "children", "icon", "noCaret", "placement"]);
41
- var sidenav = (0, _react.useContext)(_Sidenav.SidenavContext);
42
-
43
- var _useContext = (0, _react.useContext)(_NavContext.default),
44
- withinNav = _useContext.withinNav;
45
35
 
46
36
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
47
37
  prefix = _useClassNames.prefix,
@@ -50,14 +40,11 @@ var DropdownToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref
50
40
 
51
41
  var classes = merge(className, withClassPrefix({
52
42
  'no-caret': noCaret
53
- }));
54
- var inSidenav = !!sidenav; // Caret icon is down by default, when Dropdown is used in Sidenav.
43
+ })); // Caret icon is down by default, when Dropdown is used in Sidenav.
55
44
 
56
- var Caret = (0, _useToggleCaret.default)(inSidenav ? 'bottomStart' : placement);
45
+ var Caret = (0, _useToggleCaret.default)(placement);
57
46
 
58
- var toggle = /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
59
- appearance: withinNav ? 'subtle' : undefined
60
- }, rest, {
47
+ var toggle = /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
61
48
  ref: ref,
62
49
  className: classes
63
50
  }), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
@@ -1,2 +1,2 @@
1
1
  import React from 'react';
2
- export declare function useRenderDropdownItem(Component: React.ElementType): (props: any, OverrideComponent?: React.ElementType<any> | undefined) => JSX.Element;
2
+ export declare function useRenderDropdownItem(Component: React.ElementType): (props: any, OverrideComponent?: React.ElementType) => JSX.Element;
@@ -44,21 +44,21 @@ export interface FormProps<T = Record<string, any>, errorMsgType = any, E = {
44
44
  export interface FormInstance<T = Record<string, any>, errorMsg = string, E = {
45
45
  [P in keyof T]?: errorMsg;
46
46
  }> {
47
- root: React.FormHTMLAttributes<HTMLFormElement>;
47
+ root: HTMLFormElement | null;
48
48
  /** Verify form data */
49
- check?: (callback?: (formError: E) => void) => boolean;
49
+ check: (callback?: (formError: E) => void) => boolean;
50
50
  /** Asynchronously check form data */
51
- checkAsync?: () => Promise<any>;
51
+ checkAsync: () => Promise<any>;
52
52
  /** Check the data field */
53
- checkForField?: (fieldName: keyof T, callback?: (checkResult: CheckResult<errorMsg>) => void) => boolean;
53
+ checkForField: (fieldName: keyof T, callback?: (checkResult: CheckResult<errorMsg>) => void) => boolean;
54
54
  /** Asynchronous verification as a data field */
55
- checkForFieldAsync?: (fieldName: keyof T) => Promise<CheckResult>;
55
+ checkForFieldAsync: (fieldName: keyof T) => Promise<CheckResult>;
56
56
  /** Clear all error messages */
57
- cleanErrors?: (callback?: () => void) => void;
57
+ cleanErrors: (callback?: () => void) => void;
58
58
  /** Clear the error message of the specified field */
59
- cleanErrorForField?: (fieldName: keyof E, callback?: () => void) => void;
59
+ cleanErrorForField: (fieldName: keyof E, callback?: () => void) => void;
60
60
  /** All error messages are reset, and an initial value can be set */
61
- resetErrors?: (formError: E, callback?: () => void) => void;
61
+ resetErrors: (formError: E, callback?: () => void) => void;
62
62
  }
63
63
  export interface FormComponent extends RsRefForwardingComponent<'form', FormProps & {
64
64
  ref?: React.Ref<FormInstance>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _Form = _interopRequireDefault(require("../Form"));
8
+
9
+ var _formRef$current;
10
+
11
+ var formRef = /*#__PURE__*/_react.default.createRef();
12
+
13
+ /*#__PURE__*/
14
+ _react.default.createElement(_Form.default, {
15
+ ref: formRef
16
+ });
17
+
18
+ (_formRef$current = formRef.current) === null || _formRef$current === void 0 ? void 0 : _formRef$current.check();
@@ -33,6 +33,7 @@ export interface MenuHandle {
33
33
  }
34
34
  /**
35
35
  * Headless ARIA `menu`
36
+ * @private
36
37
  */
37
38
  declare function Menu({ disabled, children, openMenuOn, defaultOpen, open: openProp, menuButtonText, renderMenuButton, renderMenuPopup, onToggleMenu }: MenuProps & React.HTMLAttributes<HTMLUListElement>): React.ReactElement<React.HTMLAttributes<HTMLDivElement>, string | React.JSXElementConstructor<any>>;
38
39
  declare namespace Menu {
package/cjs/Menu/Menu.js CHANGED
@@ -34,6 +34,7 @@ var _dom = require("../utils/dom");
34
34
  var defaultOpenMenuOn = ['click'];
35
35
  /**
36
36
  * Headless ARIA `menu`
37
+ * @private
37
38
  */
38
39
 
39
40
  function Menu(_ref) {
@@ -16,6 +16,7 @@ export interface MenuitemRenderProps {
16
16
  }
17
17
  /**
18
18
  * Headless ARIA `menuitem`
19
+ * @private
19
20
  */
20
21
  declare function MenuItem(props: MenuItemProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
21
22
  declare namespace MenuItem {
@@ -19,6 +19,7 @@ var _MenuContext = _interopRequireWildcard(require("./MenuContext"));
19
19
 
20
20
  /**
21
21
  * Headless ARIA `menuitem`
22
+ * @private
22
23
  */
23
24
  function MenuItem(props) {
24
25
  var children = props.children,
@@ -7,4 +7,7 @@ export interface MenubarProps {
7
7
  /** Callback triggered when an item is being activated */
8
8
  onActivateItem?: (event: React.SyntheticEvent) => void;
9
9
  }
10
+ /**
11
+ * @private
12
+ */
10
13
  export default function Menubar({ vertical, children, onActivateItem }: MenubarProps): JSX.Element;
@@ -22,6 +22,10 @@ var _useMenu = _interopRequireDefault(require("./useMenu"));
22
22
  var _dom = require("../utils/dom");
23
23
 
24
24
  // Headless ARIA `menubar`
25
+
26
+ /**
27
+ * @private
28
+ */
25
29
  function Menubar(_ref) {
26
30
  var _items$activeItemInde3;
27
31
 
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _Modal = _interopRequireDefault(require("../Modal"));
8
+
9
+ /*#__PURE__*/
10
+ _react.default.createElement(_Modal.default, {
11
+ container: function container() {
12
+ return document.body;
13
+ }
14
+ });
@@ -3,4 +3,4 @@ export declare const useBodyStyles: (ref: React.RefObject<HTMLElement>, options:
3
3
  overflow: boolean;
4
4
  drawer: boolean;
5
5
  prefix: (...classes: any) => string;
6
- }) => [import("react").CSSProperties, (entering?: boolean | undefined) => void, () => void];
6
+ }) => [import("react").CSSProperties, (entering?: boolean) => void, () => void];
package/cjs/Nav/Nav.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import React from 'react';
2
2
  import NavItem from './NavItem';
3
- import Dropdown from '../Dropdown';
4
3
  import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
4
+ import NavDropdown from './NavDropdown';
5
+ import NavMenu from './NavMenu';
5
6
  export interface NavProps<T = any> extends WithAsProps, Omit<React.HTMLAttributes<HTMLElement>, 'onSelect'> {
6
7
  /** sets appearance */
7
8
  appearance?: 'default' | 'subtle' | 'tabs';
@@ -19,8 +20,12 @@ export interface NavProps<T = any> extends WithAsProps, Omit<React.HTMLAttribute
19
20
  onSelect?: (eventKey: T | undefined, event: React.SyntheticEvent) => void;
20
21
  }
21
22
  interface NavComponent extends RsRefForwardingComponent<'div', NavProps> {
22
- Dropdown: typeof Dropdown;
23
+ /**
24
+ * @deprecated Use <Nav.Menu> instead.
25
+ */
26
+ Dropdown: typeof NavDropdown;
23
27
  Item: typeof NavItem;
28
+ Menu: typeof NavMenu;
24
29
  }
25
30
  declare const Nav: NavComponent;
26
31
  export default Nav;
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 = _Dropdown.default;
122
- Nav.Item = _NavItem.default;
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,
@@ -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;
@@ -7,13 +7,7 @@ exports.default = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
10
- var _noop = _interopRequireDefault(require("lodash/noop"));
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;