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
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { Locale } from '../locales';
3
+ import { ToastContainerInstance } from '../toaster/ToastContainer';
3
4
  export interface CustomValue<T = Locale> {
4
5
  /** Language configuration */
5
6
  locale: T;
@@ -33,6 +34,10 @@ export interface CustomValue<T = Locale> {
33
34
  *
34
35
  * */
35
36
  parseDate: (dateString: string, formatString: string) => Date;
37
+ /**
38
+ * A Map of toast containers
39
+ */
40
+ toasters?: React.MutableRefObject<Map<string, ToastContainerInstance>>;
36
41
  }
37
42
  export interface CustomProviderProps<T = Locale> extends Partial<CustomValue<T>> {
38
43
  /** Supported themes */
@@ -41,6 +46,8 @@ export interface CustomProviderProps<T = Locale> extends Partial<CustomValue<T>>
41
46
  classPrefix?: string;
42
47
  /** Primary content */
43
48
  children?: React.ReactNode;
49
+ /** Sets a container for toast rendering */
50
+ toastContainer?: HTMLElement | (() => HTMLElement | null) | null;
44
51
  }
45
52
  declare const CustomContext: React.Context<CustomProviderProps<{
46
53
  common?: {
@@ -75,7 +82,7 @@ declare const CustomContext: React.Context<CustomProviderProps<{
75
82
  yesterday: string;
76
83
  hours: string;
77
84
  minutes: string;
78
- seconds: string; /** Support right-to-left */
85
+ seconds: string;
79
86
  formattedMonthPattern: string;
80
87
  formattedDayPattern: string;
81
88
  dateLocale: any;
@@ -93,7 +100,7 @@ declare const CustomContext: React.Context<CustomProviderProps<{
93
100
  yesterday: string;
94
101
  hours: string;
95
102
  minutes: string;
96
- seconds: string; /** Support right-to-left */
103
+ seconds: string;
97
104
  formattedMonthPattern: string;
98
105
  formattedDayPattern: string;
99
106
  dateLocale: any;
@@ -112,7 +119,7 @@ declare const CustomContext: React.Context<CustomProviderProps<{
112
119
  yesterday: string;
113
120
  hours: string;
114
121
  minutes: string;
115
- seconds: string; /** Support right-to-left */
122
+ seconds: string;
116
123
  formattedMonthPattern: string;
117
124
  formattedDayPattern: string;
118
125
  dateLocale: any;
@@ -125,6 +132,9 @@ declare const CustomContext: React.Context<CustomProviderProps<{
125
132
  } | undefined;
126
133
  InputPicker?: {
127
134
  newItem: string;
135
+ /**
136
+ * A Map of toast containers
137
+ */
128
138
  createOption: string;
129
139
  } | undefined;
130
140
  Uploader?: {
@@ -179,7 +189,7 @@ declare const Consumer: React.Consumer<CustomProviderProps<{
179
189
  yesterday: string;
180
190
  hours: string;
181
191
  minutes: string;
182
- seconds: string; /** Support right-to-left */
192
+ seconds: string;
183
193
  formattedMonthPattern: string;
184
194
  formattedDayPattern: string;
185
195
  dateLocale: any;
@@ -197,7 +207,7 @@ declare const Consumer: React.Consumer<CustomProviderProps<{
197
207
  yesterday: string;
198
208
  hours: string;
199
209
  minutes: string;
200
- seconds: string; /** Support right-to-left */
210
+ seconds: string;
201
211
  formattedMonthPattern: string;
202
212
  formattedDayPattern: string;
203
213
  dateLocale: any;
@@ -216,7 +226,7 @@ declare const Consumer: React.Consumer<CustomProviderProps<{
216
226
  yesterday: string;
217
227
  hours: string;
218
228
  minutes: string;
219
- seconds: string; /** Support right-to-left */
229
+ seconds: string;
220
230
  formattedMonthPattern: string;
221
231
  formattedDayPattern: string;
222
232
  dateLocale: any;
@@ -229,6 +239,9 @@ declare const Consumer: React.Consumer<CustomProviderProps<{
229
239
  } | undefined;
230
240
  InputPicker?: {
231
241
  newItem: string;
242
+ /**
243
+ * A Map of toast containers
244
+ */
232
245
  createOption: string;
233
246
  } | undefined;
234
247
  Uploader?: {
@@ -250,6 +263,6 @@ declare const Consumer: React.Consumer<CustomProviderProps<{
250
263
  off: string;
251
264
  } | undefined;
252
265
  }>>;
253
- declare const CustomProvider: (props: CustomProviderProps) => JSX.Element;
266
+ declare const CustomProvider: (props: Omit<CustomProviderProps, 'toasters'>) => JSX.Element;
254
267
  export { CustomContext, Consumer as CustomConsumer };
255
268
  export default CustomProvider;
@@ -17,6 +17,10 @@ var _prefix = require("../utils/prefix");
17
17
 
18
18
  var _DOMHelper = require("../DOMHelper");
19
19
 
20
+ var _ToastContainer = _interopRequireWildcard(require("../toaster/ToastContainer"));
21
+
22
+ var _utils = require("../utils");
23
+
20
24
  var CustomContext = /*#__PURE__*/_react.default.createContext({});
21
25
 
22
26
  exports.CustomContext = CustomContext;
@@ -30,12 +34,21 @@ var CustomProvider = function CustomProvider(props) {
30
34
  _props$classPrefix = props.classPrefix,
31
35
  classPrefix = _props$classPrefix === void 0 ? (0, _prefix.getClassNamePrefix)() : _props$classPrefix,
32
36
  theme = props.theme,
33
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["children", "classPrefix", "theme"]);
37
+ container = props.toastContainer,
38
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["children", "classPrefix", "theme", "toastContainer"]);
39
+
40
+ var toasters = _react.default.useRef(new Map());
41
+
42
+ var _usePortal = (0, _utils.usePortal)({
43
+ container: container
44
+ }),
45
+ Portal = _usePortal.Portal;
34
46
 
35
47
  var value = _react.default.useMemo(function () {
36
48
  return (0, _extends2.default)({
37
49
  classPrefix: classPrefix,
38
- theme: theme
50
+ theme: theme,
51
+ toasters: toasters
39
52
  }, rest);
40
53
  }, [classPrefix, theme, rest]);
41
54
 
@@ -52,7 +65,15 @@ var CustomProvider = function CustomProvider(props) {
52
65
  }, [classPrefix, theme]);
53
66
  return /*#__PURE__*/_react.default.createElement(Provider, {
54
67
  value: value
55
- }, children);
68
+ }, children, /*#__PURE__*/_react.default.createElement(Portal, null, _ToastContainer.toastPlacements.map(function (placement) {
69
+ return /*#__PURE__*/_react.default.createElement(_ToastContainer.default, {
70
+ key: placement,
71
+ placement: placement,
72
+ ref: function ref(_ref) {
73
+ toasters.current.set(placement, _ref);
74
+ }
75
+ });
76
+ })));
56
77
  };
57
78
 
58
79
  var _default = CustomProvider;
@@ -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,