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
@@ -2,19 +2,17 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  import React, { useCallback, useContext, useEffect } from 'react';
4
4
  import PropTypes from 'prop-types';
5
- import { SidenavContext } from '../Sidenav/Sidenav';
6
5
  import deprecatePropType from '../utils/deprecatePropType';
7
6
  import MenuItem from '../Menu/MenuItem';
8
7
  import DropdownContext from './DropdownContext';
9
8
  import isNil from 'lodash/isNil';
10
- import { createChainedFunction, mergeRefs, shallowEqual, useClassNames } from '../utils';
11
- import { NavbarContext } from '../Navbar/Navbar';
12
- import SidenavDropdownItem from '../Sidenav/SidenavDropdownItem';
13
- import DisclosureContext, { DisclosureActionTypes } from '../Disclosure/DisclosureContext';
9
+ import { mergeRefs, shallowEqual, useClassNames } from '../utils';
14
10
  import NavContext from '../Nav/NavContext';
15
11
  import useInternalId from '../utils/useInternalId';
16
12
  import { DropdownActionType } from './DropdownState';
17
13
  import { useRenderDropdownItem } from './useRenderDropdownItem';
14
+ import warnOnce from '../utils/warnOnce';
15
+ import Nav from '../Nav';
18
16
 
19
17
  /**
20
18
  * The <Dropdown.Item> API
@@ -52,21 +50,7 @@ var DropdownItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
52
50
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(eventKey, event);
53
51
  dropdown === null || dropdown === void 0 ? void 0 : (_dropdown$onSelect = dropdown.onSelect) === null || _dropdown$onSelect === void 0 ? void 0 : _dropdown$onSelect.call(dropdown, eventKey, event);
54
52
  }, [onSelect, eventKey, dropdown]);
55
- var sidenav = useContext(SidenavContext);
56
- var navbar = useContext(NavbarContext);
57
- var disclosure = useContext(DisclosureContext);
58
-
59
- var _ref = disclosure !== null && disclosure !== void 0 ? disclosure : [],
60
- dispatchDisclosure = _ref[1];
61
-
62
- var handleClickNavbarDropdownItem = useCallback(function (event) {
63
- dispatchDisclosure === null || dispatchDisclosure === void 0 ? void 0 : dispatchDisclosure({
64
- type: DisclosureActionTypes.Hide,
65
- cascade: true
66
- });
67
- handleSelectItem === null || handleSelectItem === void 0 ? void 0 : handleSelectItem(event);
68
- }, [dispatchDisclosure, handleSelectItem]);
69
- var selected = activeProp || !isNil(eventKey) && (shallowEqual(dropdown === null || dropdown === void 0 ? void 0 : dropdown.activeKey, eventKey) || shallowEqual(nav === null || nav === void 0 ? void 0 : nav.activeKey, eventKey));
53
+ var selected = activeProp || !isNil(eventKey) && shallowEqual(dropdown === null || dropdown === void 0 ? void 0 : dropdown.activeKey, eventKey);
70
54
  var dispatch = dropdown === null || dropdown === void 0 ? void 0 : dropdown.dispatch;
71
55
  useEffect(function () {
72
56
  if (dispatch) {
@@ -89,10 +73,12 @@ var DropdownItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
89
73
  };
90
74
  }
91
75
  }, [internalId, selected, dispatch]);
92
- var renderDropdownItem = useRenderDropdownItem(Component);
76
+ var renderDropdownItem = useRenderDropdownItem(Component); // If using <Dropdown.Item> within <Nav>
77
+ // Suggest <Nav.Item>
93
78
 
94
- if (sidenav !== null && sidenav !== void 0 && sidenav.expanded) {
95
- return /*#__PURE__*/React.createElement(SidenavDropdownItem, _extends({
79
+ if (nav) {
80
+ warnOnce('Usage of <Dropdown.Item> within <Nav> is deprecated. Replace with <Nav.Item> within <Nav.Menu>.');
81
+ return /*#__PURE__*/React.createElement(Nav.Item, _extends({
96
82
  ref: ref
97
83
  }, props));
98
84
  }
@@ -113,42 +99,14 @@ var DropdownItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
113
99
  }, restProps));
114
100
  }
115
101
 
116
- if (navbar) {
117
- var classes = merge(className, withClassPrefix({
118
- 'with-icon': icon,
119
- disabled: disabled,
120
- divider: divider,
121
- panel: panel,
122
- active: selected
123
- }));
124
- var dataAttributes = {
125
- 'data-event-key': eventKey
126
- };
127
-
128
- if (!isNil(eventKey) && typeof eventKey !== 'string') {
129
- dataAttributes['data-event-key-type'] = typeof eventKey;
130
- }
131
-
132
- return renderDropdownItem(_extends({
133
- ref: ref,
134
- className: classes,
135
- 'aria-current': selected || undefined
136
- }, dataAttributes, restProps, {
137
- onClick: createChainedFunction(handleClickNavbarDropdownItem, restProps.onClick),
138
- children: /*#__PURE__*/React.createElement(React.Fragment, null, icon && /*#__PURE__*/React.cloneElement(icon, {
139
- className: prefix('menu-icon')
140
- }), children)
141
- }));
142
- }
143
-
144
102
  return /*#__PURE__*/React.createElement(MenuItem, {
145
103
  selected: selected,
146
104
  disabled: disabled,
147
105
  onActivate: handleSelectItem
148
- }, function (_ref2, menuitemRef) {
149
- var selected = _ref2.selected,
150
- active = _ref2.active,
151
- menuitem = _objectWithoutPropertiesLoose(_ref2, ["selected", "active"]);
106
+ }, function (_ref, menuitemRef) {
107
+ var selected = _ref.selected,
108
+ active = _ref.active,
109
+ menuitem = _objectWithoutPropertiesLoose(_ref, ["selected", "active"]);
152
110
 
153
111
  var classes = merge(className, withClassPrefix({
154
112
  'with-icon': icon,
@@ -2,7 +2,7 @@ import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTempla
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
4
 
5
- var _templateObject, _templateObject2, _templateObject3, _templateObject4;
5
+ var _templateObject, _templateObject2;
6
6
 
7
7
  import React, { useCallback, useContext, useMemo } from 'react';
8
8
  import omit from 'lodash/omit';
@@ -10,15 +10,14 @@ import Menu from '../Menu/Menu';
10
10
  import MenuItem from '../Menu/MenuItem';
11
11
  import { mergeRefs, useClassNames } from '../utils';
12
12
  import PropTypes from 'prop-types';
13
- import { SidenavContext } from '../Sidenav/Sidenav';
14
13
  import AngleLeft from '@rsuite/icons/legacy/AngleLeft';
15
14
  import AngleRight from '@rsuite/icons/legacy/AngleRight';
16
15
  import useCustom from '../utils/useCustom';
17
16
  import DropdownContext from './DropdownContext';
18
- import { NavbarContext } from '../Navbar';
19
17
  import Menubar from '../Menu/Menubar';
20
- import SidenavDropdownMenu from '../Sidenav/SidenavDropdownMenu';
21
- import Disclosure from '../Disclosure';
18
+ import Nav from '../Nav';
19
+ import NavContext from '../Nav/NavContext';
20
+ import warnOnce from '../utils/warnOnce';
22
21
 
23
22
  /**
24
23
  * The <Dropdown.Menu> API
@@ -49,9 +48,8 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
49
48
  children = props.children,
50
49
  rest = _objectWithoutPropertiesLoose(props, ["onToggle", "eventKey", "title", "activeKey", "onSelect", "classPrefix", "children"]);
51
50
 
51
+ var nav = useContext(NavContext);
52
52
  var dropdown = useContext(DropdownContext);
53
- var sidenav = useContext(SidenavContext);
54
- var withinNavbar = Boolean(useContext(NavbarContext));
55
53
 
56
54
  var _useCustom = useCustom('DropdownMenu'),
57
55
  rtl = _useCustom.rtl;
@@ -79,9 +77,18 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
79
77
  activeKey: activeKey,
80
78
  onSelect: onSelect
81
79
  };
82
- }, [activeKey, onSelect]); // <Dropdown.Menu> is used outside of <Dropdown>
80
+ }, [activeKey, onSelect]); // If rendered within a <Nav>
81
+ // Suggest <Nav.Menu>
82
+
83
+ if (nav) {
84
+ warnOnce('Usage of <Dropdown.Menu> within <Nav> is deprecated. Replace with <Nav.Menu>');
85
+ return /*#__PURE__*/React.createElement(Nav.Menu, _extends({
86
+ ref: ref
87
+ }, props));
88
+ } // <Dropdown.Menu> is used outside of <Dropdown>
83
89
  // renders a vertical `menubar`
84
90
 
91
+
85
92
  if (!dropdown) {
86
93
  var classes = merge(props.className, withClassPrefix());
87
94
  return /*#__PURE__*/React.createElement(DropdownContext.Provider, {
@@ -94,10 +101,6 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
94
101
  className: classes
95
102
  }, menubar, rest), children);
96
103
  }));
97
- }
98
-
99
- if (sidenav !== null && sidenav !== void 0 && sidenav.expanded) {
100
- return /*#__PURE__*/React.createElement(SidenavDropdownMenu, omit(props, 'classPrefix'));
101
104
  } // Parent menu exists. This is a submenu.
102
105
  // Should render a `menuitem` that controls this submenu.
103
106
 
@@ -108,69 +111,21 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
108
111
  disabled = _omit.disabled,
109
112
  menuProps = _objectWithoutPropertiesLoose(_omit, ["icon", "className", "disabled"]);
110
113
 
111
- var Icon = rtl ? AngleLeft : AngleRight; // Renders a disclosure when used within <Navbar>
112
-
113
- if (withinNavbar) {
114
- return /*#__PURE__*/React.createElement(Disclosure, {
115
- hideOnClickOutside: true,
116
- trigger: ['click', 'mouseover']
117
- }, function (_ref, containerRef) {
118
- var open = _ref.open,
119
- props = _objectWithoutPropertiesLoose(_ref, ["open"]);
120
-
121
- var classes = mergeItemClassNames(className, withItemClassPrefix({
122
- disabled: disabled,
123
- open: open,
124
- submenu: true
125
- }));
126
- return /*#__PURE__*/React.createElement("li", _extends({
127
- ref: mergeRefs(ref, containerRef),
128
- className: classes
129
- }, props), /*#__PURE__*/React.createElement(Disclosure.Button, null, function (_ref2, buttonRef) {
130
- var open = _ref2.open,
131
- buttonProps = _objectWithoutPropertiesLoose(_ref2, ["open"]);
132
-
133
- var classes = mergeItemClassNames(className, prefixItemClassName(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["toggle"]))), withItemClassPrefix({
134
- 'with-icon': icon,
135
- open: open,
136
- disabled: disabled
137
- }));
138
- return /*#__PURE__*/React.createElement("div", _extends({
139
- ref: mergeRefs(buttonRef, buttonRef),
140
- className: classes,
141
- "data-event-key": eventKey,
142
- "data-event-key-type": typeof eventKey
143
- }, buttonProps), icon && /*#__PURE__*/React.cloneElement(icon, {
144
- className: prefix('menu-icon')
145
- }), title, /*#__PURE__*/React.createElement(Icon, {
146
- className: prefix(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["toggle-icon"])))
147
- }));
148
- }), /*#__PURE__*/React.createElement(Disclosure.Content, null, function (_ref3, elementRef) {
149
- var open = _ref3.open;
150
- var menuClassName = mergeMenuClassName(className, withMenuClassPrefix());
151
- return /*#__PURE__*/React.createElement("ul", _extends({
152
- ref: elementRef,
153
- className: menuClassName,
154
- hidden: !open
155
- }, menuProps), children);
156
- }));
157
- });
158
- }
159
-
114
+ var Icon = rtl ? AngleLeft : AngleRight;
160
115
  return /*#__PURE__*/React.createElement(Menu, {
161
116
  openMenuOn: ['mouseover', 'click'],
162
- renderMenuButton: function renderMenuButton(_ref4, buttonRef) {
163
- var open = _ref4.open,
164
- menuButtonProps = _objectWithoutPropertiesLoose(_ref4, ["open"]);
117
+ renderMenuButton: function renderMenuButton(_ref, buttonRef) {
118
+ var open = _ref.open,
119
+ menuButtonProps = _objectWithoutPropertiesLoose(_ref, ["open"]);
165
120
 
166
121
  return /*#__PURE__*/React.createElement(MenuItem, {
167
122
  disabled: disabled
168
- }, function (_ref5, menuitemRef) {
169
- var selected = _ref5.selected,
170
- active = _ref5.active,
171
- menuitem = _objectWithoutPropertiesLoose(_ref5, ["selected", "active"]);
123
+ }, function (_ref2, menuitemRef) {
124
+ var selected = _ref2.selected,
125
+ active = _ref2.active,
126
+ menuitem = _objectWithoutPropertiesLoose(_ref2, ["selected", "active"]);
172
127
 
173
- var classes = mergeItemClassNames(className, prefixItemClassName(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["toggle"]))), withItemClassPrefix({
128
+ var classes = mergeItemClassNames(className, prefixItemClassName(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["toggle"]))), withItemClassPrefix({
174
129
  'with-icon': icon,
175
130
  open: open,
176
131
  active: selected,
@@ -185,13 +140,13 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
185
140
  }, menuitem, omit(menuButtonProps, ['role'])), icon && /*#__PURE__*/React.cloneElement(icon, {
186
141
  className: prefix('menu-icon')
187
142
  }), title, /*#__PURE__*/React.createElement(Icon, {
188
- className: prefix(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["toggle-icon"])))
143
+ className: prefix(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["toggle-icon"])))
189
144
  }));
190
145
  });
191
146
  },
192
- renderMenuPopup: function renderMenuPopup(_ref6, popupRef) {
193
- var open = _ref6.open,
194
- popupProps = _objectWithoutPropertiesLoose(_ref6, ["open"]);
147
+ renderMenuPopup: function renderMenuPopup(_ref3, popupRef) {
148
+ var open = _ref3.open,
149
+ popupProps = _objectWithoutPropertiesLoose(_ref3, ["open"]);
195
150
 
196
151
  var menuClassName = mergeMenuClassName(className, withMenuClassPrefix());
197
152
  return /*#__PURE__*/React.createElement("ul", _extends({
@@ -201,9 +156,9 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
201
156
  }, popupProps, menuProps), children);
202
157
  },
203
158
  onToggleMenu: handleToggleSubmenu
204
- }, function (_ref7, menuContainerRef) {
205
- var open = _ref7.open,
206
- menuContainer = _objectWithoutPropertiesLoose(_ref7, ["open"]);
159
+ }, function (_ref4, menuContainerRef) {
160
+ var open = _ref4.open,
161
+ menuContainer = _objectWithoutPropertiesLoose(_ref4, ["open"]);
207
162
 
208
163
  var classes = mergeItemClassNames(className, withItemClassPrefix({
209
164
  disabled: disabled,
@@ -1,12 +1,10 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- import React, { useContext } from 'react';
3
+ import React from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import Button from '../Button';
6
6
  import { useClassNames } from '../utils';
7
7
  import useToggleCaret from '../utils/useToggleCaret';
8
- import { SidenavContext } from '../Sidenav/Sidenav';
9
- import NavContext from '../Nav/NavContext';
10
8
  var DropdownToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
11
9
  var _props$as = props.as,
12
10
  Component = _props$as === void 0 ? Button : _props$as,
@@ -21,11 +19,6 @@ var DropdownToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
21
19
  placement = _props$placement === void 0 ? 'bottomStart' : _props$placement,
22
20
  rest = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "renderToggle", "children", "icon", "noCaret", "placement"]);
23
21
 
24
- var sidenav = useContext(SidenavContext);
25
-
26
- var _useContext = useContext(NavContext),
27
- withinNav = _useContext.withinNav;
28
-
29
22
  var _useClassNames = useClassNames(classPrefix),
30
23
  prefix = _useClassNames.prefix,
31
24
  withClassPrefix = _useClassNames.withClassPrefix,
@@ -33,13 +26,10 @@ var DropdownToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
33
26
 
34
27
  var classes = merge(className, withClassPrefix({
35
28
  'no-caret': noCaret
36
- }));
37
- var inSidenav = !!sidenav; // Caret icon is down by default, when Dropdown is used in Sidenav.
29
+ })); // Caret icon is down by default, when Dropdown is used in Sidenav.
38
30
 
39
- var Caret = useToggleCaret(inSidenav ? 'bottomStart' : placement);
40
- var toggle = /*#__PURE__*/React.createElement(Component, _extends({
41
- appearance: withinNav ? 'subtle' : undefined
42
- }, rest, {
31
+ var Caret = useToggleCaret(placement);
32
+ var toggle = /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
43
33
  ref: ref,
44
34
  className: classes
45
35
  }), icon && /*#__PURE__*/React.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,11 @@
1
+ var _formRef$current;
2
+
3
+ import React from 'react';
4
+ import Form from '../Form';
5
+ var formRef = /*#__PURE__*/React.createRef();
6
+
7
+ /*#__PURE__*/
8
+ React.createElement(Form, {
9
+ ref: formRef
10
+ });
11
+ (_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/esm/Menu/Menu.js CHANGED
@@ -13,6 +13,7 @@ import { isFocusableElement } from '../utils/dom';
13
13
  var defaultOpenMenuOn = ['click'];
14
14
  /**
15
15
  * Headless ARIA `menu`
16
+ * @private
16
17
  */
17
18
 
18
19
  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 {
@@ -6,6 +6,7 @@ import MenuContext, { MenuActionTypes, MoveFocusTo } from './MenuContext';
6
6
 
7
7
  /**
8
8
  * Headless ARIA `menuitem`
9
+ * @private
9
10
  */
10
11
  function MenuItem(props) {
11
12
  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;
@@ -6,6 +6,10 @@ import { KEY_VALUES, useCustom } from '../utils';
6
6
  import { isFocusEntering, isFocusLeaving } from '../utils/events';
7
7
  import useMenu from './useMenu';
8
8
  import { isFocusableElement } from '../utils/dom';
9
+
10
+ /**
11
+ * @private
12
+ */
9
13
  export default function Menubar(_ref) {
10
14
  var _items$activeItemInde3;
11
15
 
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import Modal from '../Modal';
3
+
4
+ /*#__PURE__*/
5
+ React.createElement(Modal, {
6
+ container: function container() {
7
+ return document.body;
8
+ }
9
+ });
@@ -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/esm/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/esm/Nav/Nav.js CHANGED
@@ -1,15 +1,24 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- import React, { useContext, useMemo } from 'react';
3
+ import React, { useContext, useEffect, useMemo } from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import NavItem from './NavItem';
6
- import Dropdown from '../Dropdown';
7
6
  import { useClassNames } from '../utils';
8
7
  import { NavbarContext } from '../Navbar/Navbar';
9
8
  import { SidenavContext } from '../Sidenav/Sidenav';
10
9
  import NavContext from './NavContext';
11
10
  import useEnsuredRef from '../utils/useEnsuredRef';
12
11
  import Menubar from '../Menu/Menubar';
12
+ import NavDropdown from './NavDropdown';
13
+ import NavMenu, { NavMenuActionType, NavMenuContext } from './NavMenu';
14
+ import deprecateComponent from '../utils/deprecateComponent';
15
+ import NavDropdownItem from './NavDropdownItem';
16
+ import NavDropdownMenu from './NavDropdownMenu';
17
+ import NavbarDropdownItem from '../Navbar/NavbarDropdownItem';
18
+ import SidenavDropdownItem from '../Sidenav/SidenavDropdownItem';
19
+ import NavbarItem from '../Navbar/NavbarItem';
20
+ import SidenavItem from '../Sidenav/SidenavItem';
21
+ import useInternalId from '../utils/useInternalId';
13
22
  var Nav = /*#__PURE__*/React.forwardRef(function (props, ref) {
14
23
  var _props$as = props.as,
15
24
  Component = _props$as === void 0 ? 'div' : _props$as,
@@ -57,7 +66,6 @@ var Nav = /*#__PURE__*/React.forwardRef(function (props, ref) {
57
66
  var activeKey = activeKeyProp !== null && activeKeyProp !== void 0 ? activeKeyProp : activeKeyFromSidenav;
58
67
  var contextValue = useMemo(function () {
59
68
  return {
60
- withinNav: true,
61
69
  activeKey: activeKey,
62
70
  onSelect: onSelectProp !== null && onSelectProp !== void 0 ? onSelectProp : onSelectFromSidenav
63
71
  };
@@ -97,8 +105,91 @@ var Nav = /*#__PURE__*/React.forwardRef(function (props, ref) {
97
105
  className: prefix('bar')
98
106
  })));
99
107
  });
100
- Nav.Dropdown = Dropdown;
101
- Nav.Item = NavItem;
108
+ var DeprecatedNavDropdown = deprecateComponent(NavDropdown, '<Nav.Dropdown> is deprecated, use <Nav.Menu> instead.');
109
+ DeprecatedNavDropdown.Menu = deprecateComponent(NavDropdownMenu, '<Nav.Dropdown.Menu> is deprecated, use <Nav.Menu> instead');
110
+ DeprecatedNavDropdown.Item = deprecateComponent(NavDropdownItem, '<Nav.Dropdown.Item> is deprecated, use <Nav.Item> instead');
111
+ Nav.Dropdown = DeprecatedNavDropdown;
112
+ /**
113
+ * The <Nav.Item> API
114
+ * When used as direct child of <Nav>, render the NavItem
115
+ * When used within a <Nav.Menu>, render the NavDropdownItem
116
+ */
117
+
118
+ Nav.Item = /*#__PURE__*/React.forwardRef(function (props, ref) {
119
+ var nav = useContext(NavContext);
120
+
121
+ if (!nav) {
122
+ throw new Error('<Nav.Item> must be rendered within a <Nav> component.');
123
+ }
124
+
125
+ var parentNavMenu = useContext(NavMenuContext);
126
+ var navbar = useContext(NavbarContext);
127
+ var sidenav = useContext(SidenavContext);
128
+
129
+ var _ref2 = parentNavMenu !== null && parentNavMenu !== void 0 ? parentNavMenu : [],
130
+ dispatch = _ref2[1];
131
+
132
+ var _id = useInternalId('Nav.Item');
133
+
134
+ useEffect(function () {
135
+ if (dispatch) {
136
+ var _props$active;
137
+
138
+ dispatch({
139
+ type: NavMenuActionType.RegisterItem,
140
+ payload: {
141
+ _id: _id,
142
+ eventKey: props.eventKey,
143
+ active: (_props$active = props.active) !== null && _props$active !== void 0 ? _props$active : false
144
+ }
145
+ });
146
+ return function () {
147
+ dispatch({
148
+ type: NavMenuActionType.UnregisterItem,
149
+ payload: {
150
+ _id: _id
151
+ }
152
+ });
153
+ };
154
+ }
155
+ }, [dispatch, _id, props.eventKey, props.active]);
156
+
157
+ if (parentNavMenu) {
158
+ if (navbar) {
159
+ return /*#__PURE__*/React.createElement(NavbarDropdownItem, _extends({
160
+ ref: ref
161
+ }, props));
162
+ }
163
+
164
+ if (sidenav) {
165
+ return /*#__PURE__*/React.createElement(SidenavDropdownItem, _extends({
166
+ ref: ref
167
+ }, props));
168
+ }
169
+
170
+ return /*#__PURE__*/React.createElement(NavDropdownItem, _extends({
171
+ ref: ref
172
+ }, props));
173
+ }
174
+
175
+ if (navbar) {
176
+ return /*#__PURE__*/React.createElement(NavbarItem, _extends({
177
+ ref: ref
178
+ }, props));
179
+ }
180
+
181
+ if (sidenav) {
182
+ return /*#__PURE__*/React.createElement(SidenavItem, _extends({
183
+ ref: ref
184
+ }, props));
185
+ }
186
+
187
+ return /*#__PURE__*/React.createElement(NavItem, _extends({
188
+ ref: ref
189
+ }, props));
190
+ });
191
+ Nav.Item.displayName = 'Nav.Item';
192
+ Nav.Menu = NavMenu;
102
193
  Nav.displayName = 'Nav';
103
194
  Nav.propTypes = {
104
195
  classPrefix: PropTypes.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;
@@ -1,8 +1,3 @@
1
1
  import React from 'react';
2
- import noop from 'lodash/noop';
3
- var NavContext = /*#__PURE__*/React.createContext({
4
- withinNav: false,
5
- activeKey: null,
6
- onSelect: noop
7
- });
2
+ var NavContext = /*#__PURE__*/React.createContext(null);
8
3
  export default NavContext;