rsuite 5.12.0 → 5.13.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 (146) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/Nav/styles/index.less +7 -1
  3. package/Navbar/styles/index.less +6 -1
  4. package/Sidenav/styles/index.less +7 -5
  5. package/cjs/Cascader/DropdownMenu.js +8 -3
  6. package/cjs/Disclosure/Disclosure.d.ts +1 -1
  7. package/cjs/Disclosure/DisclosureContext.d.ts +1 -1
  8. package/cjs/Dropdown/Dropdown.js +26 -110
  9. package/cjs/Dropdown/DropdownItem.js +14 -58
  10. package/cjs/Dropdown/DropdownMenu.js +32 -76
  11. package/cjs/Dropdown/DropdownToggle.js +4 -17
  12. package/cjs/Menu/Menu.d.ts +1 -0
  13. package/cjs/Menu/Menu.js +1 -0
  14. package/cjs/Menu/MenuItem.d.ts +1 -0
  15. package/cjs/Menu/MenuItem.js +1 -0
  16. package/cjs/Menu/Menubar.d.ts +3 -0
  17. package/cjs/Menu/Menubar.js +4 -0
  18. package/cjs/Nav/Nav.d.ts +7 -2
  19. package/cjs/Nav/Nav.js +105 -5
  20. package/cjs/Nav/NavContext.d.ts +2 -8
  21. package/cjs/Nav/NavContext.js +1 -7
  22. package/cjs/Nav/NavDropdown.d.ts +71 -0
  23. package/cjs/Nav/NavDropdown.js +193 -0
  24. package/cjs/Nav/NavDropdownItem.d.ts +39 -0
  25. package/cjs/Nav/NavDropdownItem.js +141 -0
  26. package/cjs/Nav/NavDropdownMenu.d.ts +26 -0
  27. package/cjs/Nav/NavDropdownMenu.js +156 -0
  28. package/cjs/Nav/NavDropdownToggle.d.ts +21 -0
  29. package/cjs/Nav/NavDropdownToggle.js +74 -0
  30. package/cjs/Nav/NavItem.d.ts +2 -0
  31. package/cjs/Nav/NavItem.js +13 -26
  32. package/cjs/Nav/NavMenu.d.ts +38 -0
  33. package/cjs/Nav/NavMenu.js +122 -0
  34. package/cjs/Navbar/NavbarDropdown.d.ts +57 -0
  35. package/cjs/Navbar/NavbarDropdown.js +147 -0
  36. package/cjs/Navbar/NavbarDropdownItem.d.ts +41 -0
  37. package/cjs/Navbar/NavbarDropdownItem.js +149 -0
  38. package/cjs/Navbar/NavbarDropdownMenu.d.ts +37 -0
  39. package/cjs/Navbar/NavbarDropdownMenu.js +155 -0
  40. package/cjs/Navbar/NavbarDropdownToggle.d.ts +19 -0
  41. package/cjs/Navbar/NavbarDropdownToggle.js +72 -0
  42. package/cjs/Navbar/NavbarItem.d.ts +5 -2
  43. package/cjs/Navbar/NavbarItem.js +10 -4
  44. package/cjs/Picker/utils.js +22 -15
  45. package/cjs/Sidenav/ExpandedSidenavDropdown.d.ts +43 -0
  46. package/cjs/Sidenav/ExpandedSidenavDropdown.js +166 -0
  47. package/cjs/Sidenav/ExpandedSidenavDropdownItem.d.ts +31 -0
  48. package/cjs/Sidenav/ExpandedSidenavDropdownItem.js +141 -0
  49. package/cjs/Sidenav/ExpandedSidenavDropdownMenu.d.ts +26 -0
  50. package/cjs/Sidenav/ExpandedSidenavDropdownMenu.js +145 -0
  51. package/cjs/Sidenav/Sidenav.d.ts +8 -2
  52. package/cjs/Sidenav/Sidenav.js +1 -2
  53. package/cjs/Sidenav/SidenavDropdown.d.ts +30 -8
  54. package/cjs/Sidenav/SidenavDropdown.js +144 -73
  55. package/cjs/Sidenav/SidenavDropdownItem.d.ts +22 -5
  56. package/cjs/Sidenav/SidenavDropdownItem.js +88 -72
  57. package/cjs/Sidenav/SidenavDropdownMenu.d.ts +26 -16
  58. package/cjs/Sidenav/SidenavDropdownMenu.js +122 -90
  59. package/cjs/Sidenav/SidenavDropdownToggle.d.ts +19 -0
  60. package/cjs/Sidenav/SidenavDropdownToggle.js +72 -0
  61. package/cjs/Sidenav/SidenavItem.d.ts +3 -0
  62. package/cjs/Sidenav/SidenavItem.js +22 -14
  63. package/cjs/utils/deprecateComponent.js +4 -6
  64. package/cjs/utils/deprecatePropType.d.ts +1 -5
  65. package/cjs/utils/deprecatePropType.js +7 -14
  66. package/cjs/utils/useInternalId.d.ts +1 -1
  67. package/cjs/utils/useInternalId.js +2 -2
  68. package/cjs/utils/warnOnce.d.ts +9 -0
  69. package/cjs/utils/warnOnce.js +22 -0
  70. package/dist/rsuite-rtl.css +18 -9
  71. package/dist/rsuite-rtl.min.css +1 -1
  72. package/dist/rsuite-rtl.min.css.map +1 -1
  73. package/dist/rsuite.css +18 -9
  74. package/dist/rsuite.js +275 -22
  75. package/dist/rsuite.js.map +1 -1
  76. package/dist/rsuite.min.css +1 -1
  77. package/dist/rsuite.min.css.map +1 -1
  78. package/dist/rsuite.min.js +1 -1
  79. package/dist/rsuite.min.js.map +1 -1
  80. package/esm/Cascader/DropdownMenu.js +8 -3
  81. package/esm/Disclosure/Disclosure.d.ts +1 -1
  82. package/esm/Disclosure/DisclosureContext.d.ts +1 -1
  83. package/esm/Dropdown/Dropdown.js +25 -105
  84. package/esm/Dropdown/DropdownItem.js +13 -55
  85. package/esm/Dropdown/DropdownMenu.js +31 -76
  86. package/esm/Dropdown/DropdownToggle.js +4 -14
  87. package/esm/Menu/Menu.d.ts +1 -0
  88. package/esm/Menu/Menu.js +1 -0
  89. package/esm/Menu/MenuItem.d.ts +1 -0
  90. package/esm/Menu/MenuItem.js +1 -0
  91. package/esm/Menu/Menubar.d.ts +3 -0
  92. package/esm/Menu/Menubar.js +4 -0
  93. package/esm/Nav/Nav.d.ts +7 -2
  94. package/esm/Nav/Nav.js +96 -5
  95. package/esm/Nav/NavContext.d.ts +2 -8
  96. package/esm/Nav/NavContext.js +1 -6
  97. package/esm/Nav/NavDropdown.d.ts +71 -0
  98. package/esm/Nav/NavDropdown.js +170 -0
  99. package/esm/Nav/NavDropdownItem.d.ts +39 -0
  100. package/esm/Nav/NavDropdownItem.js +123 -0
  101. package/esm/Nav/NavDropdownMenu.d.ts +26 -0
  102. package/esm/Nav/NavDropdownMenu.js +138 -0
  103. package/esm/Nav/NavDropdownToggle.d.ts +21 -0
  104. package/esm/Nav/NavDropdownToggle.js +57 -0
  105. package/esm/Nav/NavItem.d.ts +2 -0
  106. package/esm/Nav/NavItem.js +13 -21
  107. package/esm/Nav/NavMenu.d.ts +38 -0
  108. package/esm/Nav/NavMenu.js +98 -0
  109. package/esm/Navbar/NavbarDropdown.d.ts +57 -0
  110. package/esm/Navbar/NavbarDropdown.js +124 -0
  111. package/esm/Navbar/NavbarDropdownItem.d.ts +41 -0
  112. package/esm/Navbar/NavbarDropdownItem.js +128 -0
  113. package/esm/Navbar/NavbarDropdownMenu.d.ts +37 -0
  114. package/esm/Navbar/NavbarDropdownMenu.js +135 -0
  115. package/esm/Navbar/NavbarDropdownToggle.d.ts +19 -0
  116. package/esm/Navbar/NavbarDropdownToggle.js +55 -0
  117. package/esm/Navbar/NavbarItem.d.ts +5 -2
  118. package/esm/Navbar/NavbarItem.js +11 -4
  119. package/esm/Picker/utils.js +22 -14
  120. package/esm/Sidenav/ExpandedSidenavDropdown.d.ts +43 -0
  121. package/esm/Sidenav/ExpandedSidenavDropdown.js +140 -0
  122. package/esm/Sidenav/ExpandedSidenavDropdownItem.d.ts +31 -0
  123. package/esm/Sidenav/ExpandedSidenavDropdownItem.js +120 -0
  124. package/esm/Sidenav/ExpandedSidenavDropdownMenu.d.ts +26 -0
  125. package/esm/Sidenav/ExpandedSidenavDropdownMenu.js +121 -0
  126. package/esm/Sidenav/Sidenav.d.ts +8 -2
  127. package/esm/Sidenav/Sidenav.js +1 -2
  128. package/esm/Sidenav/SidenavDropdown.d.ts +30 -8
  129. package/esm/Sidenav/SidenavDropdown.js +145 -75
  130. package/esm/Sidenav/SidenavDropdownItem.d.ts +22 -5
  131. package/esm/Sidenav/SidenavDropdownItem.js +87 -71
  132. package/esm/Sidenav/SidenavDropdownMenu.d.ts +26 -16
  133. package/esm/Sidenav/SidenavDropdownMenu.js +122 -86
  134. package/esm/Sidenav/SidenavDropdownToggle.d.ts +19 -0
  135. package/esm/Sidenav/SidenavDropdownToggle.js +55 -0
  136. package/esm/Sidenav/SidenavItem.d.ts +3 -0
  137. package/esm/Sidenav/SidenavItem.js +23 -15
  138. package/esm/utils/deprecateComponent.js +3 -4
  139. package/esm/utils/deprecatePropType.d.ts +1 -5
  140. package/esm/utils/deprecatePropType.js +3 -13
  141. package/esm/utils/useInternalId.d.ts +1 -1
  142. package/esm/utils/useInternalId.js +2 -2
  143. package/esm/utils/warnOnce.d.ts +9 -0
  144. package/esm/utils/warnOnce.js +18 -0
  145. package/package.json +1 -1
  146. package/styles/variables.less +1 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ # [5.13.0](https://github.com/rsuite/rsuite/compare/v5.12.0...v5.13.0) (2022-05-19)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **listbox:** fix broken keyboard navigation after filtering ([#2491](https://github.com/rsuite/rsuite/issues/2491)) ([329623a](https://github.com/rsuite/rsuite/commit/329623a21e8d551db3e634894ddcbb3658b1579d))
6
+
7
+ ### Performance Improvements
8
+
9
+ - **Cascader:** apply tree view pattern ([#2492](https://github.com/rsuite/rsuite/issues/2492)) ([f3a5808](https://github.com/rsuite/rsuite/commit/f3a5808eb60cc4f5250cce908322a702a91a9d96))
10
+
1
11
  # [5.12.0](https://github.com/rsuite/rsuite/compare/v5.11.0...v5.12.0) (2022-05-12)
2
12
 
3
13
  ### Features
@@ -82,9 +82,15 @@
82
82
  });
83
83
  }
84
84
 
85
- > .rs-icon {
85
+ &-icon {
86
86
  margin-right: 6px;
87
87
  }
88
+
89
+ &-caret {
90
+ font-size: 16px;
91
+ vertical-align: text-bottom;
92
+ margin-left: 6px;
93
+ }
88
94
  }
89
95
 
90
96
  // Orientations
@@ -63,10 +63,15 @@
63
63
  display: flex;
64
64
  align-items: center;
65
65
 
66
- > .rs-icon {
66
+ &-icon {
67
67
  font-size: 16px;
68
68
  margin-right: 5px;
69
69
  }
70
+
71
+ &-caret {
72
+ font-size: 16px;
73
+ margin-left: 6px;
74
+ }
70
75
  }
71
76
 
72
77
  // Focus style
@@ -68,11 +68,12 @@
68
68
 
69
69
  // Submenu toggle icon
70
70
  &-icon {
71
+ font-size: @sidenav-item-caret-size;
71
72
  position: absolute;
72
73
  right: @sidenav-padding-horizontal;
73
74
  top: @sidenav-children-padding-vertical;
74
- width: auto;
75
- height: @sidenav-dropdown-toggle-caret-width;
75
+ // width: auto;
76
+ // height: @sidenav-dropdown-toggle-caret-width;
76
77
  transform: rotate(90deg);
77
78
  }
78
79
  }
@@ -115,6 +116,7 @@
115
116
  padding-right: (@sidenav-padding-horizontal + @sidenav-dropdown-toggle-caret-width);
116
117
 
117
118
  .rs-dropdown-toggle-caret {
119
+ font-size: @sidenav-item-caret-size;
118
120
  right: @sidenav-padding-horizontal;
119
121
  top: @sidenav-padding-vertical;
120
122
 
@@ -425,7 +427,7 @@
425
427
 
426
428
  .rs-sidenav-item.rs-sidenav-item-active,
427
429
  .rs-dropdown-item.rs-dropdown-item-active,
428
- .rs-dropdown.rs-dropdown-selected-within .rs-dropdown-toggle-icon {
430
+ .rs-dropdown.rs-dropdown-selected-within .rs-sidenav-item-icon {
429
431
  color: var(--rs-sidenav-default-selected-text);
430
432
  }
431
433
 
@@ -466,7 +468,7 @@
466
468
  .rs-sidenav-default.rs-sidenav-collapsing,
467
469
  .rs-sidenav-default.rs-sidenav-collapse-out {
468
470
  // Set active Level1 style
469
- .rs-dropdown.rs-dropdown-selected-within .rs-dropdown-toggle-icon {
471
+ .rs-dropdown.rs-dropdown-selected-within .rs-sidenav-item-icon {
470
472
  color: var(--rs-sidenav-default-selected-text);
471
473
  }
472
474
  }
@@ -546,7 +548,7 @@
546
548
  // Active
547
549
  .rs-sidenav-item.rs-sidenav-item-active,
548
550
  .rs-dropdown-item.rs-dropdown-item-active,
549
- .rs-dropdown.rs-dropdown-selected-within .rs-dropdown-toggle {
551
+ .rs-dropdown.rs-dropdown-selected-within .rs-sidenav-item-icon {
550
552
  color: var(--rs-sidenav-subtle-selected-text);
551
553
  }
552
554
 
@@ -123,11 +123,13 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
123
123
  return /*#__PURE__*/_react.default.createElement(_Picker.DropdownMenuItem, {
124
124
  classPrefix: "picker-cascader-menu-item",
125
125
  as: 'li',
126
+ role: "treeitem",
126
127
  key: layer + "-" + onlyKey,
127
128
  disabled: disabled,
128
129
  active: !(0, _isUndefined.default)(activeItemValue) && (0, _utils.shallowEqual)(activeItemValue, value),
129
130
  focus: focus,
130
131
  value: value,
132
+ "aria-owns": node.children ? 'treeitem-' + value + '-children' : undefined,
131
133
  className: children ? prefix('has-children') : undefined,
132
134
  onSelect: function onSelect(_value, event) {
133
135
  return handleSelect(layer, node, event);
@@ -143,14 +145,15 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
143
145
  };
144
146
  var cascadeNodes = cascadeData.map(function (children, layer) {
145
147
  var onlyKey = layer + "_" + children.length;
148
+ var parentNode = cascadePaths[layer - 1];
146
149
 
147
150
  var menu = /*#__PURE__*/_react.default.createElement("ul", {
148
- role: "listbox"
151
+ role: layer === 0 ? 'none presentation' : 'group',
152
+ id: parentNode ? 'treeitem-' + parentNode[valueKey] + '-children' : undefined
149
153
  }, children.map(function (item, index) {
150
154
  return renderCascadeNode(item, index, layer, cascadePaths[layer] && (0, _utils.shallowEqual)(cascadePaths[layer][valueKey], item[valueKey]));
151
155
  }));
152
156
 
153
- var parentNode = cascadePaths[layer - 1];
154
157
  return /*#__PURE__*/_react.default.createElement("div", {
155
158
  key: onlyKey,
156
159
  className: prefix('column'),
@@ -162,7 +165,9 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
162
165
  }
163
166
  }, renderMenu ? renderMenu(children, menu, parentNode, layer) : menu);
164
167
  });
165
- return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
168
+ return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
169
+ role: "tree"
170
+ }, rest, {
166
171
  ref: (0, _utils.mergeRefs)(rootRef, ref),
167
172
  className: classes
168
173
  }), /*#__PURE__*/_react.default.createElement("div", {
@@ -15,7 +15,7 @@ export interface DisclosureProps {
15
15
  /** Callback when disclosure button is being activated to update the open state */
16
16
  onToggle?: (open: boolean, event: React.SyntheticEvent) => void;
17
17
  /** What mouse events should disclosure reacts to */
18
- trigger?: DisclosureTrigger[];
18
+ trigger?: readonly DisclosureTrigger[];
19
19
  }
20
20
  export interface DisclosureComponent extends React.FC<DisclosureProps> {
21
21
  Button: typeof DisclosureButton;
@@ -17,7 +17,7 @@ export declare type DisclosureContextProps = [
17
17
  DisclosureState,
18
18
  Dispatch<DisclosureAction>,
19
19
  {
20
- trigger: DisclosureTrigger[];
20
+ trigger: readonly DisclosureTrigger[];
21
21
  onToggle?: (open: boolean, event: React.SyntheticEvent) => void;
22
22
  }
23
23
  ];
@@ -23,8 +23,6 @@ var _DropdownMenu = _interopRequireDefault(require("./DropdownMenu"));
23
23
 
24
24
  var _utils = require("../utils");
25
25
 
26
- var _Sidenav = require("../Sidenav/Sidenav");
27
-
28
26
  var _deprecatePropType = _interopRequireDefault(require("../utils/deprecatePropType"));
29
27
 
30
28
  var _DropdownItem = _interopRequireDefault(require("./DropdownItem"));
@@ -35,22 +33,16 @@ var _Menu = _interopRequireDefault(require("../Menu/Menu"));
35
33
 
36
34
  var _DropdownToggle = _interopRequireDefault(require("./DropdownToggle"));
37
35
 
38
- var _MenuContext = _interopRequireDefault(require("../Menu/MenuContext"));
39
-
40
- var _MenuItem = _interopRequireDefault(require("../Menu/MenuItem"));
41
-
42
36
  var _kebabCase = _interopRequireDefault(require("lodash/kebabCase"));
43
37
 
44
- var _Navbar = require("../Navbar");
45
-
46
- var _Disclosure = _interopRequireDefault(require("../Disclosure/Disclosure"));
47
-
48
- var _SidenavDropdown = _interopRequireDefault(require("../Sidenav/SidenavDropdown"));
49
-
50
38
  var _NavContext = _interopRequireDefault(require("../Nav/NavContext"));
51
39
 
52
40
  var _DropdownState = require("./DropdownState");
53
41
 
42
+ var _warnOnce = _interopRequireDefault(require("../utils/warnOnce"));
43
+
44
+ var _Nav = _interopRequireDefault(require("../Nav"));
45
+
54
46
  /**
55
47
  * The <Dropdown> API
56
48
  * When used inside <Sidenav>, renders a <TreeviewRootItem>;
@@ -58,7 +50,7 @@ var _DropdownState = require("./DropdownState");
58
50
  */
59
51
  var Dropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
60
52
  var activeKey = props.activeKey,
61
- onSelectProp = props.onSelect,
53
+ onSelect = props.onSelect,
62
54
  rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["activeKey", "onSelect"]);
63
55
  var _rest$as = rest.as,
64
56
  Component = _rest$as === void 0 ? 'div' : _rest$as,
@@ -66,7 +58,6 @@ var Dropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
66
58
  onClose = rest.onClose,
67
59
  onOpen = rest.onOpen,
68
60
  onToggle = rest.onToggle,
69
- eventKey = rest.eventKey,
70
61
  _rest$trigger = rest.trigger,
71
62
  trigger = _rest$trigger === void 0 ? 'click' : _rest$trigger,
72
63
  _rest$placement = rest.placement,
@@ -82,30 +73,17 @@ var Dropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
82
73
  children = rest.children,
83
74
  menuStyle = rest.menuStyle,
84
75
  style = rest.style,
85
- toggleProps = (0, _objectWithoutPropertiesLoose2.default)(rest, ["as", "title", "onClose", "onOpen", "onToggle", "eventKey", "trigger", "placement", "toggleAs", "toggleClassName", "open", "defaultOpen", "classPrefix", "className", "disabled", "children", "menuStyle", "style"]);
86
-
87
- var _useContext = (0, _react.useContext)(_NavContext.default),
88
- onSelectFromNav = _useContext.onSelect;
89
-
90
- var emitSelect = (0, _react.useCallback)(function (eventKey, event) {
91
- onSelectProp === null || onSelectProp === void 0 ? void 0 : onSelectProp(eventKey, event); // If <Dropdown> is inside <Nav>, also trigger `onSelect` on <Nav>
92
-
93
- onSelectFromNav === null || onSelectFromNav === void 0 ? void 0 : onSelectFromNav(eventKey, event);
94
- }, [onSelectProp, onSelectFromNav]);
76
+ toggleProps = (0, _objectWithoutPropertiesLoose2.default)(rest, ["as", "title", "onClose", "onOpen", "onToggle", "trigger", "placement", "toggleAs", "toggleClassName", "open", "defaultOpen", "classPrefix", "className", "disabled", "children", "menuStyle", "style"]);
77
+ var nav = (0, _react.useContext)(_NavContext.default);
95
78
 
96
79
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
97
80
  merge = _useClassNames.merge,
98
- withClassPrefix = _useClassNames.withClassPrefix,
99
- prefix = _useClassNames.prefix;
81
+ withClassPrefix = _useClassNames.withClassPrefix;
100
82
 
101
83
  var _useClassNames2 = (0, _utils.useClassNames)('dropdown-menu'),
102
84
  withMenuClassPrefix = _useClassNames2.withClassPrefix,
103
85
  mergeMenuClassName = _useClassNames2.merge;
104
86
 
105
- var _useClassNames3 = (0, _utils.useClassNames)('nav-item'),
106
- withNavItemClassPrefix = _useClassNames3.withClassPrefix,
107
- mergeNavItemClassNames = _useClassNames3.merge;
108
-
109
87
  var menuButtonTriggers = (0, _react.useMemo)(function () {
110
88
  if (!trigger) {
111
89
  return undefined;
@@ -125,9 +103,6 @@ var Dropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
125
103
  return triggerMap[t];
126
104
  });
127
105
  }, [trigger]);
128
- var parentMenu = (0, _react.useContext)(_MenuContext.default);
129
- var sidenav = (0, _react.useContext)(_Sidenav.SidenavContext);
130
- var navbar = (0, _react.useContext)(_Navbar.NavbarContext);
131
106
 
132
107
  var _useReducer = (0, _react.useReducer)(_DropdownState.reducer, _DropdownState.initialState),
133
108
  items = _useReducer[0].items,
@@ -141,54 +116,18 @@ var Dropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
141
116
  var dropdownContextValue = (0, _react.useMemo)(function () {
142
117
  return {
143
118
  activeKey: activeKey,
144
- onSelect: emitSelect,
119
+ onSelect: onSelect,
145
120
  hasSelectedItem: hasSelectedItem,
146
121
  dispatch: dispatch
147
122
  };
148
- }, [activeKey, emitSelect, hasSelectedItem, dispatch]); // Render a disclosure when inside expanded <Sidenav>
123
+ }, [activeKey, onSelect, hasSelectedItem, dispatch]); // Deprecate <Dropdown> within <Nav> usage
124
+ // in favor of <Nav.Menu> API
149
125
 
150
- if (sidenav !== null && sidenav !== void 0 && sidenav.expanded) {
151
- return /*#__PURE__*/_react.default.createElement(_DropdownContext.default.Provider, {
152
- value: dropdownContextValue
153
- }, /*#__PURE__*/_react.default.createElement(_SidenavDropdown.default, (0, _extends2.default)({
126
+ if (nav) {
127
+ (0, _warnOnce.default)('Usage of <Dropdown> within <Nav> is deprecated. Replace with <Nav.Menu>');
128
+ return /*#__PURE__*/_react.default.createElement(_Nav.default.Menu, (0, _extends2.default)({
154
129
  ref: ref
155
- }, rest)));
156
- } // Renders a disclosure when used inside <Navbar>
157
-
158
-
159
- if (navbar) {
160
- return /*#__PURE__*/_react.default.createElement(_DropdownContext.default.Provider, {
161
- value: dropdownContextValue
162
- }, /*#__PURE__*/_react.default.createElement(_Disclosure.default, {
163
- hideOnClickOutside: true
164
- }, function (_ref, containerRef) {
165
- var _withClassPrefix;
166
-
167
- var open = _ref.open;
168
- var classes = merge(className, withClassPrefix((_withClassPrefix = {}, _withClassPrefix["placement-" + (0, _kebabCase.default)((0, _utils.placementPolyfill)(placement))] = !!placement, _withClassPrefix.disabled = disabled, _withClassPrefix.open = open, _withClassPrefix)));
169
- return /*#__PURE__*/_react.default.createElement(Component, {
170
- ref: (0, _utils.mergeRefs)(ref, containerRef),
171
- className: classes,
172
- style: style
173
- }, /*#__PURE__*/_react.default.createElement(_Disclosure.default.Button, null, function (buttonProps, buttonRef) {
174
- return /*#__PURE__*/_react.default.createElement(_DropdownToggle.default, (0, _extends2.default)({
175
- ref: buttonRef,
176
- as: toggleAs,
177
- className: toggleClassName,
178
- placement: placement,
179
- disabled: disabled
180
- }, (0, _omit.default)(buttonProps, ['open']), toggleProps), title);
181
- }), /*#__PURE__*/_react.default.createElement(_Disclosure.default.Content, null, function (_ref2, elementRef) {
182
- var open = _ref2.open;
183
- var menuClassName = mergeMenuClassName(className, withMenuClassPrefix());
184
- return /*#__PURE__*/_react.default.createElement("ul", {
185
- ref: elementRef,
186
- className: menuClassName,
187
- style: menuStyle,
188
- hidden: !open
189
- }, children);
190
- }));
191
- }));
130
+ }, props));
192
131
  }
193
132
 
194
133
  var renderMenuButton = function renderMenuButton(menuButtonProps, menuButtonRef) {
@@ -201,24 +140,6 @@ var Dropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
201
140
  }, (0, _omit.default)(menuButtonProps, ['open']), (0, _omit.default)(toggleProps, ['data-testid'])), title);
202
141
  };
203
142
 
204
- if (parentMenu) {
205
- renderMenuButton = function renderMenuButton(menuButtonProps, buttonRef) {
206
- return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
207
- disabled: disabled
208
- }, function (_ref3, menuitemRef) {
209
- var active = _ref3.active,
210
- menuitemProps = (0, _objectWithoutPropertiesLoose2.default)(_ref3, ["active"]);
211
- return /*#__PURE__*/_react.default.createElement(_DropdownToggle.default, (0, _extends2.default)({
212
- ref: (0, _utils.mergeRefs)(buttonRef, menuitemRef),
213
- as: toggleAs,
214
- className: mergeNavItemClassNames(toggleClassName, withNavItemClassPrefix({
215
- focus: active
216
- }))
217
- }, menuButtonProps, (0, _omit.default)(menuitemProps, ['onClick']), (0, _omit.default)(toggleProps, 'data-testid')), title);
218
- });
219
- };
220
- }
221
-
222
143
  return /*#__PURE__*/_react.default.createElement(_DropdownContext.default.Provider, {
223
144
  value: dropdownContextValue
224
145
  }, /*#__PURE__*/_react.default.createElement(_Menu.default, {
@@ -227,24 +148,19 @@ var Dropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
227
148
  menuButtonText: title,
228
149
  renderMenuButton: renderMenuButton,
229
150
  openMenuOn: menuButtonTriggers,
230
- renderMenuPopup: function renderMenuPopup(_ref4, popupRef) {
231
- var open = _ref4.open,
232
- popupProps = (0, _objectWithoutPropertiesLoose2.default)(_ref4, ["open"]);
233
- var menuClassName = mergeMenuClassName(className, withMenuClassPrefix({})); // When inside a collapsed <Sidenav>, render a header in menu
234
-
235
- var showHeader = !!sidenav;
151
+ renderMenuPopup: function renderMenuPopup(_ref, popupRef) {
152
+ var open = _ref.open,
153
+ popupProps = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["open"]);
154
+ var menuClassName = mergeMenuClassName(className, withMenuClassPrefix({}));
236
155
  return /*#__PURE__*/_react.default.createElement("ul", (0, _extends2.default)({
237
156
  ref: popupRef,
238
157
  className: menuClassName,
239
158
  style: menuStyle,
240
159
  hidden: !open
241
- }, popupProps), showHeader && /*#__PURE__*/_react.default.createElement("div", {
242
- className: prefix('header')
243
- }, title), children);
160
+ }, popupProps), children);
244
161
  },
245
- onToggleMenu: function onToggleMenu(open, event) {
162
+ onToggleMenu: function onToggleMenu(open) {
246
163
  onToggle === null || onToggle === void 0 ? void 0 : onToggle(open);
247
- sidenav === null || sidenav === void 0 ? void 0 : sidenav.onOpenChange(eventKey, event);
248
164
 
249
165
  if (open) {
250
166
  onOpen === null || onOpen === void 0 ? void 0 : onOpen();
@@ -252,12 +168,12 @@ var Dropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
252
168
  onClose === null || onClose === void 0 ? void 0 : onClose();
253
169
  }
254
170
  }
255
- }, function (_ref5, menuContainerRef) {
256
- var _withClassPrefix2;
171
+ }, function (_ref2, menuContainerRef) {
172
+ var _withClassPrefix;
257
173
 
258
- var open = _ref5.open,
259
- menuContainer = (0, _objectWithoutPropertiesLoose2.default)(_ref5, ["open"]);
260
- var classes = merge(className, withClassPrefix((_withClassPrefix2 = {}, _withClassPrefix2["placement-" + (0, _kebabCase.default)((0, _utils.placementPolyfill)(placement))] = !!placement, _withClassPrefix2.disabled = disabled, _withClassPrefix2.open = open, _withClassPrefix2.submenu = !!parentMenu, _withClassPrefix2['selected-within'] = hasSelectedItem, _withClassPrefix2)));
174
+ var open = _ref2.open,
175
+ menuContainer = (0, _objectWithoutPropertiesLoose2.default)(_ref2, ["open"]);
176
+ var classes = merge(className, withClassPrefix((_withClassPrefix = {}, _withClassPrefix["placement-" + (0, _kebabCase.default)((0, _utils.placementPolyfill)(placement))] = !!placement, _withClassPrefix.disabled = disabled, _withClassPrefix.open = open, _withClassPrefix['selected-within'] = hasSelectedItem, _withClassPrefix)));
261
177
  return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
262
178
  ref: (0, _utils.mergeRefs)(ref, menuContainerRef),
263
179
  className: classes
@@ -15,8 +15,6 @@ var _react = _interopRequireWildcard(require("react"));
15
15
 
16
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
17
17
 
18
- var _Sidenav = require("../Sidenav/Sidenav");
19
-
20
18
  var _deprecatePropType = _interopRequireDefault(require("../utils/deprecatePropType"));
21
19
 
22
20
  var _MenuItem = _interopRequireDefault(require("../Menu/MenuItem"));
@@ -27,12 +25,6 @@ var _isNil = _interopRequireDefault(require("lodash/isNil"));
27
25
 
28
26
  var _utils = require("../utils");
29
27
 
30
- var _Navbar = require("../Navbar/Navbar");
31
-
32
- var _SidenavDropdownItem = _interopRequireDefault(require("../Sidenav/SidenavDropdownItem"));
33
-
34
- var _DisclosureContext = _interopRequireWildcard(require("../Disclosure/DisclosureContext"));
35
-
36
28
  var _NavContext = _interopRequireDefault(require("../Nav/NavContext"));
37
29
 
38
30
  var _useInternalId = _interopRequireDefault(require("../utils/useInternalId"));
@@ -41,6 +33,10 @@ var _DropdownState = require("./DropdownState");
41
33
 
42
34
  var _useRenderDropdownItem = require("./useRenderDropdownItem");
43
35
 
36
+ var _warnOnce = _interopRequireDefault(require("../utils/warnOnce"));
37
+
38
+ var _Nav = _interopRequireDefault(require("../Nav"));
39
+
44
40
  /**
45
41
  * The <Dropdown.Item> API
46
42
  * When used inside <Sidenav>, renders a <TreeviewItem>
@@ -76,21 +72,7 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
76
72
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(eventKey, event);
77
73
  dropdown === null || dropdown === void 0 ? void 0 : (_dropdown$onSelect = dropdown.onSelect) === null || _dropdown$onSelect === void 0 ? void 0 : _dropdown$onSelect.call(dropdown, eventKey, event);
78
74
  }, [onSelect, eventKey, dropdown]);
79
- var sidenav = (0, _react.useContext)(_Sidenav.SidenavContext);
80
- var navbar = (0, _react.useContext)(_Navbar.NavbarContext);
81
- var disclosure = (0, _react.useContext)(_DisclosureContext.default);
82
-
83
- var _ref = disclosure !== null && disclosure !== void 0 ? disclosure : [],
84
- dispatchDisclosure = _ref[1];
85
-
86
- var handleClickNavbarDropdownItem = (0, _react.useCallback)(function (event) {
87
- dispatchDisclosure === null || dispatchDisclosure === void 0 ? void 0 : dispatchDisclosure({
88
- type: _DisclosureContext.DisclosureActionTypes.Hide,
89
- cascade: true
90
- });
91
- handleSelectItem === null || handleSelectItem === void 0 ? void 0 : handleSelectItem(event);
92
- }, [dispatchDisclosure, handleSelectItem]);
93
- var selected = activeProp || !(0, _isNil.default)(eventKey) && ((0, _utils.shallowEqual)(dropdown === null || dropdown === void 0 ? void 0 : dropdown.activeKey, eventKey) || (0, _utils.shallowEqual)(nav === null || nav === void 0 ? void 0 : nav.activeKey, eventKey));
75
+ var selected = activeProp || !(0, _isNil.default)(eventKey) && (0, _utils.shallowEqual)(dropdown === null || dropdown === void 0 ? void 0 : dropdown.activeKey, eventKey);
94
76
  var dispatch = dropdown === null || dropdown === void 0 ? void 0 : dropdown.dispatch;
95
77
  (0, _react.useEffect)(function () {
96
78
  if (dispatch) {
@@ -113,10 +95,12 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
113
95
  };
114
96
  }
115
97
  }, [internalId, selected, dispatch]);
116
- var renderDropdownItem = (0, _useRenderDropdownItem.useRenderDropdownItem)(Component);
98
+ var renderDropdownItem = (0, _useRenderDropdownItem.useRenderDropdownItem)(Component); // If using <Dropdown.Item> within <Nav>
99
+ // Suggest <Nav.Item>
117
100
 
118
- if (sidenav !== null && sidenav !== void 0 && sidenav.expanded) {
119
- return /*#__PURE__*/_react.default.createElement(_SidenavDropdownItem.default, (0, _extends2.default)({
101
+ if (nav) {
102
+ (0, _warnOnce.default)('Usage of <Dropdown.Item> within <Nav> is deprecated. Replace with <Nav.Item> within <Nav.Menu>.');
103
+ return /*#__PURE__*/_react.default.createElement(_Nav.default.Item, (0, _extends2.default)({
120
104
  ref: ref
121
105
  }, props));
122
106
  }
@@ -137,42 +121,14 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
137
121
  }, restProps));
138
122
  }
139
123
 
140
- if (navbar) {
141
- var classes = merge(className, withClassPrefix({
142
- 'with-icon': icon,
143
- disabled: disabled,
144
- divider: divider,
145
- panel: panel,
146
- active: selected
147
- }));
148
- var dataAttributes = {
149
- 'data-event-key': eventKey
150
- };
151
-
152
- if (!(0, _isNil.default)(eventKey) && typeof eventKey !== 'string') {
153
- dataAttributes['data-event-key-type'] = typeof eventKey;
154
- }
155
-
156
- return renderDropdownItem((0, _extends2.default)({
157
- ref: ref,
158
- className: classes,
159
- 'aria-current': selected || undefined
160
- }, dataAttributes, restProps, {
161
- onClick: (0, _utils.createChainedFunction)(handleClickNavbarDropdownItem, restProps.onClick),
162
- children: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, icon && /*#__PURE__*/_react.default.cloneElement(icon, {
163
- className: prefix('menu-icon')
164
- }), children)
165
- }));
166
- }
167
-
168
124
  return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
169
125
  selected: selected,
170
126
  disabled: disabled,
171
127
  onActivate: handleSelectItem
172
- }, function (_ref2, menuitemRef) {
173
- var selected = _ref2.selected,
174
- active = _ref2.active,
175
- menuitem = (0, _objectWithoutPropertiesLoose2.default)(_ref2, ["selected", "active"]);
128
+ }, function (_ref, menuitemRef) {
129
+ var selected = _ref.selected,
130
+ active = _ref.active,
131
+ menuitem = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["selected", "active"]);
176
132
  var classes = merge(className, withClassPrefix({
177
133
  'with-icon': icon,
178
134
  active: selected,