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
@@ -101,7 +101,7 @@ export declare function useSearch(props: SearchProps): {
101
101
  filteredData: import("../CheckTreePicker/utils").TreeNodeType[];
102
102
  updateFilteredData: (nextData: ItemDataType[]) => void;
103
103
  setSearchKeyword: React.Dispatch<React.SetStateAction<string>>;
104
- checkShouldDisplay: (item: ItemDataType, keyword?: string | undefined) => boolean;
104
+ checkShouldDisplay: (item: ItemDataType, keyword?: string) => boolean;
105
105
  handleSearch: (searchKeyword: string, event: React.SyntheticEvent) => void;
106
106
  };
107
107
  interface PickerDependentParameters {
@@ -2,7 +2,6 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
2
2
  import React, { useState, useImperativeHandle, useCallback } from 'react';
3
3
  import kebabCase from 'lodash/kebabCase';
4
4
  import trim from 'lodash/trim';
5
- import isNil from 'lodash/isNil';
6
5
  import isFunction from 'lodash/isFunction';
7
6
  import isUndefined from 'lodash/isUndefined';
8
7
  import omit from 'lodash/omit';
@@ -174,20 +173,29 @@ export var useFocusItemValue = function useFocusItemValue(defaultFocusItemValue,
174
173
  return [];
175
174
  }
176
175
 
177
- var menu = isFunction(target) ? target() : target;
178
176
  var currentKeys = keys;
179
177
 
180
- if (currentKeys.length === 0 && !isNil(menu)) {
181
- currentKeys = Array.from(menu.querySelectorAll(focusableQueryKey)).map(function (item) {
182
- var _item$dataset;
178
+ if (layer < 1) {
179
+ var popup = isFunction(target) ? target() : target;
180
+ var rootMenu = popup === null || popup === void 0 ? void 0 : popup.querySelector('[data-layer="0"]');
183
181
 
184
- return (_item$dataset = item.dataset) === null || _item$dataset === void 0 ? void 0 : _item$dataset.key;
185
- });
186
- setKeys(currentKeys);
187
- }
182
+ if (rootMenu) {
183
+ var _rootMenu$querySelect;
188
184
 
189
- if (currentKeys.length === 0) {
190
- return [];
185
+ currentKeys = Array.from((_rootMenu$querySelect = rootMenu.querySelectorAll(focusableQueryKey)) !== null && _rootMenu$querySelect !== void 0 ? _rootMenu$querySelect : []).map(function (item) {
186
+ var _item$dataset;
187
+
188
+ return (_item$dataset = item.dataset) === null || _item$dataset === void 0 ? void 0 : _item$dataset.key;
189
+ });
190
+ } else {
191
+ var _popup$querySelectorA;
192
+
193
+ currentKeys = Array.from((_popup$querySelectorA = popup === null || popup === void 0 ? void 0 : popup.querySelectorAll(focusableQueryKey)) !== null && _popup$querySelectorA !== void 0 ? _popup$querySelectorA : []).map(function (item) {
194
+ var _item$dataset2;
195
+
196
+ return (_item$dataset2 = item.dataset) === null || _item$dataset2 === void 0 ? void 0 : _item$dataset2.key;
197
+ });
198
+ }
191
199
  } // 1. It is necessary to traverse the `keys` instead of `data` here to preserve the order of the array.
192
200
  // 2. The values ​​in `keys` are all string, so the corresponding value of `data` should also be converted to string
193
201
 
@@ -197,7 +205,7 @@ export var useFocusItemValue = function useFocusItemValue(defaultFocusItemValue,
197
205
  return "" + i[valueKey] === key;
198
206
  });
199
207
  });
200
- }, [data, focusableQueryKey, keys, target, valueKey]);
208
+ }, [data, focusableQueryKey, keys, target, valueKey, layer]);
201
209
  /**
202
210
  * Get the index of the focus item.
203
211
  */
@@ -246,9 +254,9 @@ export var useFocusItemValue = function useFocusItemValue(defaultFocusItemValue,
246
254
  var _Array$from;
247
255
 
248
256
  return (_Array$from = Array.from(subMenu.querySelectorAll(focusableQueryKey))) === null || _Array$from === void 0 ? void 0 : _Array$from.map(function (item) {
249
- var _item$dataset2;
257
+ var _item$dataset3;
250
258
 
251
- return (_item$dataset2 = item.dataset) === null || _item$dataset2 === void 0 ? void 0 : _item$dataset2.key;
259
+ return (_item$dataset3 = item.dataset) === null || _item$dataset3 === void 0 ? void 0 : _item$dataset3.key;
252
260
  });
253
261
  }
254
262
 
@@ -7,6 +7,8 @@ export interface PopoverProps extends WithAsProps {
7
7
  visible?: boolean;
8
8
  /** The content full the container */
9
9
  full?: boolean;
10
+ /** Whether show the arrow indicator */
11
+ arrow?: boolean;
10
12
  }
11
13
  declare const Popover: RsRefForwardingComponent<'div', PopoverProps>;
12
14
  export default Popover;
@@ -18,7 +18,9 @@ var Popover = /*#__PURE__*/React.forwardRef(function (props, ref) {
18
18
  visible = props.visible,
19
19
  className = props.className,
20
20
  full = props.full,
21
- rest = _objectWithoutPropertiesLoose(props, ["as", "classPrefix", "title", "children", "style", "visible", "className", "full"]);
21
+ _props$arrow = props.arrow,
22
+ arrow = _props$arrow === void 0 ? true : _props$arrow,
23
+ rest = _objectWithoutPropertiesLoose(props, ["as", "classPrefix", "title", "children", "style", "visible", "className", "full", "arrow"]);
22
24
 
23
25
  var _useClassNames = useClassNames(classPrefix),
24
26
  withClassPrefix = _useClassNames.withClassPrefix,
@@ -40,7 +42,7 @@ var Popover = /*#__PURE__*/React.forwardRef(function (props, ref) {
40
42
  ref: ref,
41
43
  className: classes,
42
44
  style: styles
43
- }), /*#__PURE__*/React.createElement("div", {
45
+ }), arrow && /*#__PURE__*/React.createElement("div", {
44
46
  className: prefix(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["arrow"]))),
45
47
  "aria-hidden": true
46
48
  }), title && /*#__PURE__*/React.createElement("h3", {
@@ -58,6 +60,7 @@ Popover.propTypes = {
58
60
  style: PropTypes.object,
59
61
  visible: PropTypes.bool,
60
62
  className: PropTypes.string,
61
- full: PropTypes.bool
63
+ full: PropTypes.bool,
64
+ arrow: PropTypes.bool
62
65
  };
63
66
  export default Popover;
@@ -0,0 +1,43 @@
1
+ import React from 'react';
2
+ import { TypeAttributes, WithAsProps, RsRefForwardingComponent } from '../@types/common';
3
+ import { IconProps } from '@rsuite/icons/lib/Icon';
4
+ export interface SidenavDropdownProps<T = any> extends WithAsProps, Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
5
+ /** Define the title as a submenu */
6
+ title?: React.ReactNode;
7
+ /** Set the icon */
8
+ icon?: React.ReactElement<IconProps>;
9
+ /** The placement of Menu */
10
+ placement?: TypeAttributes.Placement8;
11
+ /** Whether or not component is disabled */
12
+ disabled?: boolean;
13
+ /** The style of the menu */
14
+ menuStyle?: React.CSSProperties;
15
+ /** A css class to apply to the Toggle DOM node */
16
+ toggleClassName?: string;
17
+ /** The value of the current option */
18
+ eventKey?: T;
19
+ /** You can use a custom element type for this toggle component */
20
+ toggleAs?: React.ElementType;
21
+ /** No caret variation */
22
+ noCaret?: boolean;
23
+ /**
24
+ * Open the menu and control it
25
+ * @deprecated
26
+ */
27
+ open?: boolean;
28
+ /**
29
+ * Custom title
30
+ * @deprecated Use `renderToggle` instead.
31
+ */
32
+ renderTitle?: (children?: React.ReactNode) => React.ReactNode;
33
+ /** Custom Toggle */
34
+ renderToggle?: (props: WithAsProps, ref: React.Ref<any>) => any;
35
+ /** The callback function that the menu closes */
36
+ onClose?: () => void;
37
+ /** Menu Pop-up callback function */
38
+ onOpen?: () => void;
39
+ /** Callback function for menu state switching */
40
+ onToggle?: (open: boolean) => void;
41
+ }
42
+ declare const ExpandedSidenavDropdown: RsRefForwardingComponent<'li', SidenavDropdownProps>;
43
+ export default ExpandedSidenavDropdown;
@@ -0,0 +1,140 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ import React, { useContext, useCallback } from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import kebabCase from 'lodash/kebabCase';
6
+ import omit from 'lodash/omit';
7
+ import { useClassNames, placementPolyfill, PLACEMENT_8, mergeRefs } from '../utils';
8
+ import { SidenavContext } from './Sidenav';
9
+ import deprecatePropType from '../utils/deprecatePropType';
10
+ import SidenavDropdownCollapse from './SidenavDropdownCollapse';
11
+ import Disclosure from '../Disclosure/Disclosure';
12
+ import useInternalId from '../utils/useInternalId';
13
+ import SidenavDropdownToggle from './SidenavDropdownToggle';
14
+ import { NavMenuContext } from '../Nav/NavMenu';
15
+ import NavContext from '../Nav/NavContext';
16
+ var ExpandedSidenavDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
17
+ var sidenav = useContext(SidenavContext);
18
+ var nav = useContext(NavContext);
19
+ var navMenu = useContext(NavMenuContext);
20
+
21
+ if (!sidenav || !nav || !navMenu) {
22
+ throw new Error('<SidenavDropdown> component is not supposed to be used standalone. Use <Nav.Menu> inside <Sidenav> instead.');
23
+ }
24
+
25
+ var _props$as = props.as,
26
+ Component = _props$as === void 0 ? 'div' : _props$as,
27
+ title = props.title,
28
+ children = props.children,
29
+ className = props.className,
30
+ menuStyle = props.menuStyle,
31
+ disabled = props.disabled,
32
+ renderTitle = props.renderTitle,
33
+ renderToggle = props.renderToggle,
34
+ _props$classPrefix = props.classPrefix,
35
+ classPrefix = _props$classPrefix === void 0 ? 'dropdown' : _props$classPrefix,
36
+ _props$placement = props.placement,
37
+ placement = _props$placement === void 0 ? 'bottomStart' : _props$placement,
38
+ toggleClassName = props.toggleClassName,
39
+ icon = props.icon,
40
+ eventKey = props.eventKey,
41
+ toggleAs = props.toggleAs,
42
+ noCaret = props.noCaret,
43
+ style = props.style,
44
+ onOpen = props.onOpen,
45
+ onClose = props.onClose,
46
+ openProp = props.open,
47
+ onToggle = props.onToggle,
48
+ rest = _objectWithoutPropertiesLoose(props, ["as", "title", "children", "className", "menuStyle", "disabled", "renderTitle", "renderToggle", "classPrefix", "placement", "toggleClassName", "icon", "eventKey", "toggleAs", "noCaret", "style", "onOpen", "onClose", "open", "onToggle"]);
49
+
50
+ var _useClassNames = useClassNames(classPrefix),
51
+ merge = _useClassNames.merge,
52
+ withClassPrefix = _useClassNames.withClassPrefix;
53
+
54
+ var internalId = useInternalId('SidenavDropdown');
55
+ var uniqueKey = eventKey !== null && eventKey !== void 0 ? eventKey : internalId;
56
+ var _sidenav$openKeys = sidenav.openKeys,
57
+ openKeys = _sidenav$openKeys === void 0 ? [] : _sidenav$openKeys,
58
+ onOpenChange = sidenav.onOpenChange;
59
+ var items = navMenu[0].items;
60
+ var hasSelectedItems = // has items that is active indicated by <Nav activeKey>
61
+ nav.activeKey && items.some(function (item) {
62
+ return item.eventKey === nav.activeKey;
63
+ }) || // has items that is active indicated by <Nav.Item active>
64
+ items.some(function (item) {
65
+ return item.active;
66
+ });
67
+ var handleToggleDisclosure = useCallback(function (open, event) {
68
+ if (open) {
69
+ onClose === null || onClose === void 0 ? void 0 : onClose();
70
+ } else {
71
+ onOpen === null || onOpen === void 0 ? void 0 : onOpen();
72
+ }
73
+
74
+ onToggle === null || onToggle === void 0 ? void 0 : onToggle(open);
75
+ onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(uniqueKey, event);
76
+ }, [onClose, onOpen, onToggle, uniqueKey, onOpenChange]);
77
+ var open = openProp !== null && openProp !== void 0 ? openProp : openKeys.includes(uniqueKey);
78
+ return /*#__PURE__*/React.createElement(Disclosure, {
79
+ open: open,
80
+ onToggle: handleToggleDisclosure
81
+ }, function (_ref, containerRef) {
82
+ var _withClassPrefix;
83
+
84
+ var open = _ref.open;
85
+ var classes = merge(className, withClassPrefix((_withClassPrefix = {}, _withClassPrefix["placement-" + kebabCase(placementPolyfill(placement))] = placement, _withClassPrefix[open ? 'expand' : 'collapse'] = true, _withClassPrefix.disabled = disabled, _withClassPrefix['selected-within'] = hasSelectedItems, _withClassPrefix['no-caret'] = noCaret, _withClassPrefix)));
86
+ return /*#__PURE__*/React.createElement(Component, _extends({
87
+ ref: mergeRefs(ref, containerRef),
88
+ style: style,
89
+ className: classes
90
+ }, rest, {
91
+ "data-event-key": eventKey
92
+ }), /*#__PURE__*/React.createElement(Disclosure.Button, null, function (buttonProps, buttonRef) {
93
+ return /*#__PURE__*/React.createElement(SidenavDropdownToggle, _extends({
94
+ ref: buttonRef,
95
+ as: toggleAs,
96
+ noCaret: noCaret,
97
+ className: toggleClassName,
98
+ renderToggle: renderToggle,
99
+ icon: icon,
100
+ placement: placement
101
+ }, omit(buttonProps, ['open'])), title);
102
+ }), /*#__PURE__*/React.createElement(Disclosure.Content, null, function (_ref2) {
103
+ var open = _ref2.open;
104
+ return /*#__PURE__*/React.createElement(SidenavDropdownCollapse, {
105
+ open: open,
106
+ style: menuStyle
107
+ }, children);
108
+ }));
109
+ });
110
+ });
111
+ ExpandedSidenavDropdown.displayName = 'Sidenav.Dropdown';
112
+ ExpandedSidenavDropdown.propTypes = {
113
+ activeKey: PropTypes.any,
114
+ classPrefix: PropTypes.string,
115
+ placement: PropTypes.oneOf(PLACEMENT_8),
116
+ title: PropTypes.node,
117
+ disabled: PropTypes.bool,
118
+ icon: PropTypes.node,
119
+ menuStyle: PropTypes.object,
120
+ className: PropTypes.string,
121
+ toggleClassName: PropTypes.string,
122
+ children: PropTypes.node,
123
+ tabIndex: PropTypes.number,
124
+ open: deprecatePropType(PropTypes.bool),
125
+ eventKey: PropTypes.any,
126
+ as: PropTypes.elementType,
127
+ toggleAs: PropTypes.elementType,
128
+ noCaret: PropTypes.bool,
129
+ style: PropTypes.object,
130
+ onClose: PropTypes.func,
131
+ onOpen: PropTypes.func,
132
+ onToggle: PropTypes.func,
133
+ onMouseEnter: PropTypes.func,
134
+ onMouseLeave: PropTypes.func,
135
+ onContextMenu: PropTypes.func,
136
+ onClick: PropTypes.func,
137
+ renderTitle: deprecatePropType(PropTypes.func),
138
+ renderToggle: PropTypes.func
139
+ };
140
+ export default ExpandedSidenavDropdown;
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import { RsRefForwardingComponent, WithAsProps } from '../@types/common';
3
+ import { IconProps } from '@rsuite/icons/lib/Icon';
4
+ export interface SidenavDropdownItemProps<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
+ /** Whether the submenu is expanded, used in Sidenav. */
22
+ expanded?: boolean;
23
+ /** Select the callback function for the current option */
24
+ onSelect?: (eventKey: T, event: React.SyntheticEvent) => void;
25
+ }
26
+ /**
27
+ * Tree View Node
28
+ * @see https://www.w3.org/TR/wai-aria-practices-1.2/#TreeView
29
+ */
30
+ declare const ExpandedSidenavDropdownItem: RsRefForwardingComponent<'li', SidenavDropdownItemProps>;
31
+ export default ExpandedSidenavDropdownItem;
@@ -0,0 +1,120 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ import React, { useCallback, useContext } from 'react';
4
+ import isNil from 'lodash/isNil';
5
+ import { createChainedFunction, shallowEqual, useClassNames } from '../utils';
6
+ import { SidenavContext } from './Sidenav';
7
+ import PropTypes from 'prop-types';
8
+ import Ripple from '../Ripple';
9
+ import SafeAnchor from '../SafeAnchor';
10
+ import NavContext from '../Nav/NavContext';
11
+ import { useRenderDropdownItem } from '../Dropdown/useRenderDropdownItem';
12
+
13
+ /**
14
+ * Tree View Node
15
+ * @see https://www.w3.org/TR/wai-aria-practices-1.2/#TreeView
16
+ */
17
+ var ExpandedSidenavDropdownItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
18
+ var sidenav = useContext(SidenavContext);
19
+ var nav = useContext(NavContext);
20
+
21
+ if (!sidenav || !nav) {
22
+ throw new Error('<SidenavDropdownItem> component is not supposed to be used standalone. Use <Nav.Item> within <Sidenav> instead.');
23
+ }
24
+
25
+ var _props$as = props.as,
26
+ Component = _props$as === void 0 ? 'li' : _props$as,
27
+ activeProp = props.active,
28
+ children = props.children,
29
+ disabled = props.disabled,
30
+ divider = props.divider,
31
+ panel = props.panel,
32
+ className = props.className,
33
+ style = props.style,
34
+ _props$classPrefix = props.classPrefix,
35
+ classPrefix = _props$classPrefix === void 0 ? 'dropdown-item' : _props$classPrefix,
36
+ icon = props.icon,
37
+ eventKey = props.eventKey,
38
+ onClick = props.onClick,
39
+ onSelect = props.onSelect,
40
+ rest = _objectWithoutPropertiesLoose(props, ["as", "active", "children", "disabled", "divider", "panel", "className", "style", "classPrefix", "icon", "eventKey", "onClick", "onSelect"]);
41
+
42
+ var _useClassNames = useClassNames(classPrefix),
43
+ merge = _useClassNames.merge,
44
+ withClassPrefix = _useClassNames.withClassPrefix,
45
+ prefix = _useClassNames.prefix;
46
+
47
+ var selected = activeProp !== null && activeProp !== void 0 ? activeProp : !isNil(eventKey) && (shallowEqual(eventKey, sidenav.activeKey) || shallowEqual(nav.activeKey, eventKey));
48
+ var classes = merge(className, withClassPrefix({
49
+ 'with-icon': icon,
50
+ active: selected,
51
+ disabled: disabled
52
+ }));
53
+ var handleClick = useCallback(function (event) {
54
+ var _nav$onSelect, _sidenav$onSelect;
55
+
56
+ if (disabled) return;
57
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(eventKey, event);
58
+ (_nav$onSelect = nav.onSelect) === null || _nav$onSelect === void 0 ? void 0 : _nav$onSelect.call(nav, eventKey, event);
59
+ (_sidenav$onSelect = sidenav.onSelect) === null || _sidenav$onSelect === void 0 ? void 0 : _sidenav$onSelect.call(sidenav, eventKey, event);
60
+ }, [disabled, onSelect, sidenav, eventKey, nav]);
61
+ var menuitemEventHandlers = {
62
+ onClick: createChainedFunction(handleClick, onClick)
63
+ };
64
+ var renderDropdownItem = useRenderDropdownItem(Component);
65
+
66
+ if (divider) {
67
+ return renderDropdownItem(_extends({
68
+ ref: ref,
69
+ role: 'separator',
70
+ style: style,
71
+ className: merge(prefix('divider'), className)
72
+ }, rest));
73
+ }
74
+
75
+ if (panel) {
76
+ return renderDropdownItem(_extends({
77
+ ref: ref,
78
+ role: 'none presentation',
79
+ style: style,
80
+ className: merge(prefix('panel'), className)
81
+ }, rest, {
82
+ children: children
83
+ }));
84
+ }
85
+
86
+ return renderDropdownItem(_extends({
87
+ ref: ref
88
+ }, rest, {
89
+ style: style,
90
+ className: classes,
91
+ 'aria-current': selected || undefined
92
+ }, menuitemEventHandlers, {
93
+ children: /*#__PURE__*/React.createElement(React.Fragment, null, icon && /*#__PURE__*/React.cloneElement(icon, {
94
+ className: prefix('menu-icon')
95
+ }), children, /*#__PURE__*/React.createElement(Ripple, null))
96
+ }), SafeAnchor);
97
+ });
98
+ ExpandedSidenavDropdownItem.displayName = 'Sidenav.Dropdown.Item';
99
+ ExpandedSidenavDropdownItem.propTypes = {
100
+ as: PropTypes.elementType,
101
+ expanded: PropTypes.bool,
102
+ active: PropTypes.bool,
103
+ divider: PropTypes.bool,
104
+ panel: PropTypes.bool,
105
+ disabled: PropTypes.bool,
106
+ submenu: PropTypes.element,
107
+ onSelect: PropTypes.func,
108
+ onClick: PropTypes.func,
109
+ icon: PropTypes.node,
110
+ eventKey: PropTypes.any,
111
+ className: PropTypes.string,
112
+ style: PropTypes.object,
113
+ children: PropTypes.node,
114
+ classPrefix: PropTypes.string,
115
+ tabIndex: PropTypes.number,
116
+ title: PropTypes.node,
117
+ onMouseOver: PropTypes.func,
118
+ onMouseOut: PropTypes.func
119
+ };
120
+ export default ExpandedSidenavDropdownItem;
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { RsRefForwardingComponent, WithAsProps } from '../@types/common';
3
+ import { IconProps } from '@rsuite/icons/lib/Icon';
4
+ export interface SidenavDropdownMenuProps<T = any> extends WithAsProps, Omit<React.HTMLAttributes<HTMLLIElement>, 'title' | 'onSelect'> {
5
+ /** Primary content */
6
+ children?: React.ReactNode;
7
+ /** You can use a custom element for this component */
8
+ as?: React.ElementType;
9
+ /** Disable the current option */
10
+ disabled?: boolean;
11
+ /** The value of the current option */
12
+ eventKey?: T;
13
+ /** Set the icon */
14
+ icon?: React.ReactElement<IconProps>;
15
+ /** Whether the submenu is expanded, used in Sidenav. */
16
+ expanded?: boolean;
17
+ /** Select the callback function for the current option */
18
+ onSelect?: (eventKey: T, event: React.SyntheticEvent) => void;
19
+ title?: React.ReactNode;
20
+ }
21
+ /**
22
+ * Tree View Node
23
+ * @see https://www.w3.org/TR/wai-aria-practices-1.2/#TreeView
24
+ */
25
+ declare const ExpandedSidenavDropdownMenu: RsRefForwardingComponent<'li', SidenavDropdownMenuProps>;
26
+ export default ExpandedSidenavDropdownMenu;
@@ -0,0 +1,121 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
3
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
+
5
+ var _templateObject, _templateObject2;
6
+
7
+ import React, { useCallback, useContext } from 'react';
8
+ import isNil from 'lodash/isNil';
9
+ import omit from 'lodash/omit';
10
+ import { createChainedFunction, useClassNames } from '../utils';
11
+ import { SidenavContext } from './Sidenav';
12
+ import useCustom from '../utils/useCustom';
13
+ import ArrowLeftLine from '@rsuite/icons/ArrowLeftLine';
14
+ import ArrowRightLine from '@rsuite/icons/ArrowRightLine';
15
+ import PropTypes from 'prop-types';
16
+ import SidenavDropdownCollapse from './SidenavDropdownCollapse';
17
+ import Ripple from '../Ripple';
18
+ import Disclosure from '../Disclosure/Disclosure';
19
+
20
+ /**
21
+ * Tree View Node
22
+ * @see https://www.w3.org/TR/wai-aria-practices-1.2/#TreeView
23
+ */
24
+ var ExpandedSidenavDropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
25
+ var sidenavContext = useContext(SidenavContext);
26
+
27
+ if (!sidenavContext) {
28
+ throw new Error('<SidenavDropdownMenu> component is not supposed to be used standalone. Use <Nav.Menu> inside <Sidenav> instead.');
29
+ }
30
+
31
+ var _props$as = props.as,
32
+ Component = _props$as === void 0 ? 'li' : _props$as,
33
+ children = props.children,
34
+ disabled = props.disabled,
35
+ className = props.className,
36
+ style = props.style,
37
+ _props$classPrefix = props.classPrefix,
38
+ classPrefix = _props$classPrefix === void 0 ? 'dropdown-item' : _props$classPrefix,
39
+ tabIndex = props.tabIndex,
40
+ icon = props.icon,
41
+ title = props.title,
42
+ eventKey = props.eventKey,
43
+ onClick = props.onClick,
44
+ onSelect = props.onSelect,
45
+ rest = _objectWithoutPropertiesLoose(props, ["as", "children", "disabled", "className", "style", "classPrefix", "tabIndex", "icon", "title", "eventKey", "onClick", "onSelect"]);
46
+
47
+ var _useCustom = useCustom('DropdownMenu'),
48
+ rtl = _useCustom.rtl;
49
+
50
+ var _useClassNames = useClassNames(classPrefix),
51
+ merge = _useClassNames.merge,
52
+ withClassPrefix = _useClassNames.withClassPrefix,
53
+ prefix = _useClassNames.prefix;
54
+
55
+ var _sidenavContext$openK = sidenavContext.openKeys,
56
+ openKeys = _sidenavContext$openK === void 0 ? [] : _sidenavContext$openK,
57
+ onOpenChange = sidenavContext.onOpenChange,
58
+ onSidenavSelect = sidenavContext.onSelect;
59
+ var handleClick = useCallback(function (event) {
60
+ if (disabled) return;
61
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(eventKey, event);
62
+ onSidenavSelect === null || onSidenavSelect === void 0 ? void 0 : onSidenavSelect(eventKey, event);
63
+ }, [disabled, onSelect, onSidenavSelect, eventKey]);
64
+ var menuitemEventHandlers = {
65
+ onClick: createChainedFunction(handleClick, onClick)
66
+ };
67
+ var Icon = rtl ? ArrowLeftLine : ArrowRightLine;
68
+ return /*#__PURE__*/React.createElement(Disclosure, {
69
+ open: !isNil(eventKey) && openKeys.includes(eventKey),
70
+ onToggle: function onToggle(_, event) {
71
+ return onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(eventKey, event);
72
+ }
73
+ }, function (_ref) {
74
+ var open = _ref.open;
75
+ var classes = merge(className, prefix('submenu'), prefix("pull-" + (rtl ? 'left' : 'right')), prefix(open ? 'expand' : 'collapse'), withClassPrefix({
76
+ 'with-icon': icon,
77
+ // open,
78
+ disabled: disabled
79
+ }));
80
+ return /*#__PURE__*/React.createElement(Component, _extends({
81
+ ref: ref
82
+ }, rest, {
83
+ tabIndex: disabled ? -1 : tabIndex,
84
+ style: style,
85
+ className: classes
86
+ }, menuitemEventHandlers), /*#__PURE__*/React.createElement(Disclosure.Button, null, function (buttonProps) {
87
+ return /*#__PURE__*/React.createElement("button", _extends({
88
+ className: prefix(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["toggle"]))),
89
+ onClick: handleClick
90
+ }, omit(buttonProps, ['open'])), icon && /*#__PURE__*/React.cloneElement(icon, {
91
+ className: prefix('menu-icon')
92
+ }), title, /*#__PURE__*/React.createElement(Icon, {
93
+ className: prefix(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["toggle-icon"])))
94
+ }), /*#__PURE__*/React.createElement(Ripple, null));
95
+ }), /*#__PURE__*/React.createElement(Disclosure.Content, null, function (_ref2) {
96
+ var open = _ref2.open;
97
+ return /*#__PURE__*/React.createElement(SidenavDropdownCollapse, {
98
+ open: open
99
+ }, children);
100
+ }));
101
+ });
102
+ });
103
+ ExpandedSidenavDropdownMenu.displayName = 'Sidenav.Dropdown.Menu';
104
+ ExpandedSidenavDropdownMenu.propTypes = {
105
+ as: PropTypes.elementType,
106
+ expanded: PropTypes.bool,
107
+ disabled: PropTypes.bool,
108
+ onSelect: PropTypes.func,
109
+ onClick: PropTypes.func,
110
+ icon: PropTypes.node,
111
+ eventKey: PropTypes.any,
112
+ className: PropTypes.string,
113
+ style: PropTypes.object,
114
+ children: PropTypes.node,
115
+ classPrefix: PropTypes.string,
116
+ tabIndex: PropTypes.number,
117
+ title: PropTypes.node,
118
+ onMouseOver: PropTypes.func,
119
+ onMouseOut: PropTypes.func
120
+ };
121
+ export default ExpandedSidenavDropdownMenu;
@@ -21,17 +21,23 @@ export interface SidenavProps<T = string> extends WithAsProps {
21
21
  onOpenChange?: (openKeys: T[], event: React.SyntheticEvent) => void;
22
22
  /**
23
23
  * Select the callback function for the menu
24
- * @deprecated Use <Sidenav onSelect> instead
24
+ * @deprecated Use <Nav onSelect> instead
25
25
  */
26
26
  onSelect?: (eventKey: T | undefined, event: React.SyntheticEvent) => void;
27
27
  }
28
28
  export declare const SidenavContext: React.Context<SidenavContextType<string> | null>;
29
29
  export interface SidenavContextType<T = string> {
30
30
  openKeys: T[];
31
- activeKey: T | null;
31
+ /**
32
+ * @deprecated Use activeKey from NavContext instead
33
+ */
34
+ activeKey: T | undefined;
32
35
  sidenav: boolean;
33
36
  expanded: boolean;
34
37
  onOpenChange: (eventKey: T, event: React.SyntheticEvent) => void;
38
+ /**
39
+ * @deprecated Use onSelect from NavContext instead
40
+ */
35
41
  onSelect?: (eventKey: T | undefined, event: React.SyntheticEvent) => void;
36
42
  }
37
43
  export interface SidenavComponent extends RsRefForwardingComponent<'div', SidenavProps> {
@@ -22,8 +22,7 @@ var Sidenav = /*#__PURE__*/React.forwardRef(function (props, ref) {
22
22
  appearance = _props$appearance === void 0 ? 'default' : _props$appearance,
23
23
  _props$expanded = props.expanded,
24
24
  expanded = _props$expanded === void 0 ? true : _props$expanded,
25
- _props$activeKey = props.activeKey,
26
- activeKey = _props$activeKey === void 0 ? null : _props$activeKey,
25
+ activeKey = props.activeKey,
27
26
  _props$defaultOpenKey = props.defaultOpenKeys,
28
27
  defaultOpenKeys = _props$defaultOpenKey === void 0 ? emptyArray : _props$defaultOpenKey,
29
28
  openKeysProp = props.openKeys,