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
@@ -149,4 +149,10 @@ export interface Offset {
149
149
  height: number;
150
150
  }
151
151
  export declare type OnChangeCallback<T, E = React.SyntheticEvent> = (value: T, event: E) => void;
152
+ export declare type CursorPosition = {
153
+ top: number;
154
+ left: number;
155
+ clientTop: number;
156
+ clientLeft: number;
157
+ };
152
158
  export {};
@@ -100,11 +100,13 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
100
100
  return /*#__PURE__*/React.createElement(DropdownMenuItem, {
101
101
  classPrefix: "picker-cascader-menu-item",
102
102
  as: 'li',
103
+ role: "treeitem",
103
104
  key: layer + "-" + onlyKey,
104
105
  disabled: disabled,
105
106
  active: !isUndefined(activeItemValue) && shallowEqual(activeItemValue, value),
106
107
  focus: focus,
107
108
  value: value,
109
+ "aria-owns": node.children ? 'treeitem-' + value + '-children' : undefined,
108
110
  className: children ? prefix('has-children') : undefined,
109
111
  onSelect: function onSelect(_value, event) {
110
112
  return handleSelect(layer, node, event);
@@ -120,12 +122,13 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
120
122
  };
121
123
  var cascadeNodes = cascadeData.map(function (children, layer) {
122
124
  var onlyKey = layer + "_" + children.length;
125
+ var parentNode = cascadePaths[layer - 1];
123
126
  var menu = /*#__PURE__*/React.createElement("ul", {
124
- role: "listbox"
127
+ role: layer === 0 ? 'none presentation' : 'group',
128
+ id: parentNode ? 'treeitem-' + parentNode[valueKey] + '-children' : undefined
125
129
  }, children.map(function (item, index) {
126
130
  return renderCascadeNode(item, index, layer, cascadePaths[layer] && shallowEqual(cascadePaths[layer][valueKey], item[valueKey]));
127
131
  }));
128
- var parentNode = cascadePaths[layer - 1];
129
132
  return /*#__PURE__*/React.createElement("div", {
130
133
  key: onlyKey,
131
134
  className: prefix('column'),
@@ -137,7 +140,9 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
137
140
  }
138
141
  }, renderMenu ? renderMenu(children, menu, parentNode, layer) : menu);
139
142
  });
140
- return /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
143
+ return /*#__PURE__*/React.createElement(Component, _extends({
144
+ role: "tree"
145
+ }, rest, {
141
146
  ref: mergeRefs(rootRef, ref),
142
147
  className: classes
143
148
  }), /*#__PURE__*/React.createElement("div", {
@@ -6,7 +6,7 @@ export declare function getColumnsAndPaths<T extends ItemDataType>(data: T[], va
6
6
  paths: T[];
7
7
  };
8
8
  export declare function usePaths(props: CascaderProps): {
9
- enforceUpdate: (nextValue: any, isAttachChildren?: boolean | undefined) => void;
9
+ enforceUpdate: (nextValue: any, isAttachChildren?: boolean) => void;
10
10
  columnData: ItemDataType<string | number>[][];
11
11
  valueToPaths: ItemDataType<string | number>[];
12
12
  selectedPaths: ItemDataType<string | number>[];
package/esm/Col/Col.d.ts CHANGED
@@ -1,21 +1,29 @@
1
1
  import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
2
2
  export interface ColProps extends WithAsProps {
3
- /** The number of columns you wish to span for Extra small devices Phones (< 480px) */
3
+ /** The number of columns you wish to span for Extra small devices Phones (< 576px) */
4
4
  xs?: number;
5
- /** The number of columns you wish to span for Small devices Tablets (≥ 480px) */
5
+ /** The number of columns you wish to span for Small devices Tablets (≥ 576px) */
6
6
  sm?: number;
7
- /** The number of columns you wish to span for Medium devices Desktops (≥ 992px) */
7
+ /** The number of columns you wish to span for Medium devices Desktops (≥ 768px) */
8
8
  md?: number;
9
- /** The number of columns you wish to span for Large devices Desktops (≥ 1200px) */
9
+ /** The number of columns you wish to span for Large devices Desktops (≥ 992px) */
10
10
  lg?: number;
11
+ /** The number of columns you wish to span for Extra Large devices Desktops (≥ 1200px) */
12
+ xl?: number;
13
+ /** The number of columns you wish to span for Ultra Large devices Desktops (≥ 1400px) */
14
+ xxl?: number;
11
15
  /** Move columns to the right for Extra small devices Phones */
12
16
  xsOffset?: number;
13
17
  /** Move columns to the right for Small devices Tablets */
14
18
  smOffset?: number;
15
19
  /** Move columns to the right for Medium devices Desktops */
16
20
  mdOffset?: number;
17
- /** Move columns to the right for Medium devices Desktops */
21
+ /** Move columns to the right for Large devices Desktops */
18
22
  lgOffset?: number;
23
+ /** Move columns to the right for Extra large devices Desktops */
24
+ xlOffset?: number;
25
+ /** Move columns to the right for Ultra large devices Desktops */
26
+ xxlOffset?: number;
19
27
  /** Change the order of grid columns to the right for Extra small devices Phones */
20
28
  xsPush?: number;
21
29
  /** Change the order of grid columns to the right for Small devices Tablets */
@@ -24,6 +32,10 @@ export interface ColProps extends WithAsProps {
24
32
  mdPush?: number;
25
33
  /** Change the order of grid columns to the right for Large devices Desktops */
26
34
  lgPush?: number;
35
+ /** Change the order of grid columns to the right for Extra large devices Desktops */
36
+ xlPush?: number;
37
+ /** Change the order of grid columns to the right for Ultra large devices Desktops */
38
+ xxlPush?: number;
27
39
  /** Change the order of grid columns to the left for Extra small devices Phones */
28
40
  xsPull?: number;
29
41
  /** Change the order of grid columns to the left for Small devices Tablets */
@@ -32,6 +44,10 @@ export interface ColProps extends WithAsProps {
32
44
  mdPull?: number;
33
45
  /** Change the order of grid columns to the left for Large devices Desktops */
34
46
  lgPull?: number;
47
+ /** Change the order of grid columns to the left for Extra large devices Desktops */
48
+ xlPull?: number;
49
+ /** Change the order of grid columns to the left for Ultra large devices Desktops */
50
+ xxlPull?: number;
35
51
  /** Hide column on Extra small devices Phones */
36
52
  xsHidden?: boolean;
37
53
  /** Hide column on Small devices Tablets */
@@ -40,6 +56,10 @@ export interface ColProps extends WithAsProps {
40
56
  mdHidden?: boolean;
41
57
  /** Hide column on Large devices Desktops */
42
58
  lgHidden?: boolean;
59
+ /** Hide column on Extra large devices Desktops */
60
+ xlHidden?: boolean;
61
+ /** Hide column on Ultra large devices Desktops */
62
+ xxlHidden?: boolean;
43
63
  }
44
64
  declare const Col: RsRefForwardingComponent<'div', ColProps>;
45
65
  export default Col;
package/esm/Col/Col.js CHANGED
@@ -3,7 +3,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
3
3
  import React from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import omit from 'lodash/omit';
6
- import { useClassNames, SIZE } from '../utils';
6
+ import { useClassNames, COLUMN_SIZE } from '../utils';
7
7
  var Col = /*#__PURE__*/React.forwardRef(function (props, ref) {
8
8
  var _props$as = props.as,
9
9
  Component = _props$as === void 0 ? 'div' : _props$as,
@@ -26,7 +26,7 @@ var Col = /*#__PURE__*/React.forwardRef(function (props, ref) {
26
26
  return rest[key];
27
27
  };
28
28
 
29
- SIZE.forEach(function (size) {
29
+ COLUMN_SIZE.forEach(function (size) {
30
30
  var col = getPropValue(size);
31
31
  var hidden = getPropValue(size + "Hidden");
32
32
  var offset = getPropValue(size + "Offset");
@@ -55,10 +55,14 @@ Col.propTypes = {
55
55
  sm: PropTypes.number,
56
56
  md: PropTypes.number,
57
57
  lg: PropTypes.number,
58
+ xl: PropTypes.number,
59
+ xxl: PropTypes.number,
58
60
  xsOffset: PropTypes.number,
59
61
  smOffset: PropTypes.number,
60
62
  mdOffset: PropTypes.number,
61
63
  lgOffset: PropTypes.number,
64
+ xlOffset: PropTypes.number,
65
+ xxlOffset: PropTypes.number,
62
66
  xsPush: PropTypes.number,
63
67
  smPush: PropTypes.number,
64
68
  mdPush: PropTypes.number,
@@ -67,10 +71,14 @@ Col.propTypes = {
67
71
  smPull: PropTypes.number,
68
72
  mdPull: PropTypes.number,
69
73
  lgPull: PropTypes.number,
74
+ xlPull: PropTypes.number,
75
+ xxlPull: PropTypes.number,
70
76
  xsHidden: PropTypes.bool,
71
77
  smHidden: PropTypes.bool,
72
78
  mdHidden: PropTypes.bool,
73
79
  lgHidden: PropTypes.bool,
80
+ xlHidden: PropTypes.bool,
81
+ xxlHidden: PropTypes.bool,
74
82
  as: PropTypes.elementType
75
83
  };
76
84
  export default Col;
@@ -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;
@@ -3,6 +3,8 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
3
3
  import React, { useEffect } from 'react';
4
4
  import { getClassNamePrefix, prefix } from '../utils/prefix';
5
5
  import { addClass, removeClass, canUseDOM } from '../DOMHelper';
6
+ import ToastContainer, { toastPlacements } from '../toaster/ToastContainer';
7
+ import { usePortal } from '../utils';
6
8
  var CustomContext = /*#__PURE__*/React.createContext({});
7
9
  var Consumer = CustomContext.Consumer,
8
10
  Provider = CustomContext.Provider;
@@ -13,12 +15,21 @@ var CustomProvider = function CustomProvider(props) {
13
15
  _props$classPrefix = props.classPrefix,
14
16
  classPrefix = _props$classPrefix === void 0 ? getClassNamePrefix() : _props$classPrefix,
15
17
  theme = props.theme,
16
- rest = _objectWithoutPropertiesLoose(props, ["children", "classPrefix", "theme"]);
18
+ container = props.toastContainer,
19
+ rest = _objectWithoutPropertiesLoose(props, ["children", "classPrefix", "theme", "toastContainer"]);
20
+
21
+ var toasters = React.useRef(new Map());
22
+
23
+ var _usePortal = usePortal({
24
+ container: container
25
+ }),
26
+ Portal = _usePortal.Portal;
17
27
 
18
28
  var value = React.useMemo(function () {
19
29
  return _extends({
20
30
  classPrefix: classPrefix,
21
- theme: theme
31
+ theme: theme,
32
+ toasters: toasters
22
33
  }, rest);
23
34
  }, [classPrefix, theme, rest]);
24
35
  useEffect(function () {
@@ -34,7 +45,15 @@ var CustomProvider = function CustomProvider(props) {
34
45
  }, [classPrefix, theme]);
35
46
  return /*#__PURE__*/React.createElement(Provider, {
36
47
  value: value
37
- }, children);
48
+ }, children, /*#__PURE__*/React.createElement(Portal, null, toastPlacements.map(function (placement) {
49
+ return /*#__PURE__*/React.createElement(ToastContainer, {
50
+ key: placement,
51
+ placement: placement,
52
+ ref: function ref(_ref) {
53
+ toasters.current.set(placement, _ref);
54
+ }
55
+ });
56
+ })));
38
57
  };
39
58
 
40
59
  export { CustomContext, Consumer as CustomConsumer };
@@ -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
  ];
@@ -1,25 +1,21 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- import React, { useCallback, useContext, useMemo, useReducer } from 'react';
3
+ import React, { useContext, useMemo, useReducer } from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import omit from 'lodash/omit';
6
6
  import pick from 'lodash/pick';
7
7
  import DropdownMenu from './DropdownMenu';
8
8
  import { mergeRefs, PLACEMENT_8, placementPolyfill, useClassNames } from '../utils';
9
- import { SidenavContext } from '../Sidenav/Sidenav';
10
9
  import deprecatePropType from '../utils/deprecatePropType';
11
10
  import DropdownItem from './DropdownItem';
12
11
  import DropdownContext from './DropdownContext';
13
12
  import Menu from '../Menu/Menu';
14
13
  import DropdownToggle from './DropdownToggle';
15
- import MenuContext from '../Menu/MenuContext';
16
- import MenuItem from '../Menu/MenuItem';
17
14
  import kebabCase from 'lodash/kebabCase';
18
- import { NavbarContext } from '../Navbar';
19
- import Disclosure from '../Disclosure/Disclosure';
20
- import SidenavDropdown from '../Sidenav/SidenavDropdown';
21
15
  import NavContext from '../Nav/NavContext';
22
16
  import { initialState, reducer } from './DropdownState';
17
+ import warnOnce from '../utils/warnOnce';
18
+ import Nav from '../Nav';
23
19
 
24
20
  /**
25
21
  * The <Dropdown> API
@@ -28,7 +24,7 @@ import { initialState, reducer } from './DropdownState';
28
24
  */
29
25
  var Dropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
30
26
  var activeKey = props.activeKey,
31
- onSelectProp = props.onSelect,
27
+ onSelect = props.onSelect,
32
28
  rest = _objectWithoutPropertiesLoose(props, ["activeKey", "onSelect"]);
33
29
 
34
30
  var _rest$as = rest.as,
@@ -37,7 +33,6 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
37
33
  onClose = rest.onClose,
38
34
  onOpen = rest.onOpen,
39
35
  onToggle = rest.onToggle,
40
- eventKey = rest.eventKey,
41
36
  _rest$trigger = rest.trigger,
42
37
  trigger = _rest$trigger === void 0 ? 'click' : _rest$trigger,
43
38
  _rest$placement = rest.placement,
@@ -53,30 +48,18 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
53
48
  children = rest.children,
54
49
  menuStyle = rest.menuStyle,
55
50
  style = rest.style,
56
- toggleProps = _objectWithoutPropertiesLoose(rest, ["as", "title", "onClose", "onOpen", "onToggle", "eventKey", "trigger", "placement", "toggleAs", "toggleClassName", "open", "defaultOpen", "classPrefix", "className", "disabled", "children", "menuStyle", "style"]);
51
+ toggleProps = _objectWithoutPropertiesLoose(rest, ["as", "title", "onClose", "onOpen", "onToggle", "trigger", "placement", "toggleAs", "toggleClassName", "open", "defaultOpen", "classPrefix", "className", "disabled", "children", "menuStyle", "style"]);
57
52
 
58
- var _useContext = useContext(NavContext),
59
- onSelectFromNav = _useContext.onSelect;
60
-
61
- var emitSelect = useCallback(function (eventKey, event) {
62
- onSelectProp === null || onSelectProp === void 0 ? void 0 : onSelectProp(eventKey, event); // If <Dropdown> is inside <Nav>, also trigger `onSelect` on <Nav>
63
-
64
- onSelectFromNav === null || onSelectFromNav === void 0 ? void 0 : onSelectFromNav(eventKey, event);
65
- }, [onSelectProp, onSelectFromNav]);
53
+ var nav = useContext(NavContext);
66
54
 
67
55
  var _useClassNames = useClassNames(classPrefix),
68
56
  merge = _useClassNames.merge,
69
- withClassPrefix = _useClassNames.withClassPrefix,
70
- prefix = _useClassNames.prefix;
57
+ withClassPrefix = _useClassNames.withClassPrefix;
71
58
 
72
59
  var _useClassNames2 = useClassNames('dropdown-menu'),
73
60
  withMenuClassPrefix = _useClassNames2.withClassPrefix,
74
61
  mergeMenuClassName = _useClassNames2.merge;
75
62
 
76
- var _useClassNames3 = useClassNames('nav-item'),
77
- withNavItemClassPrefix = _useClassNames3.withClassPrefix,
78
- mergeNavItemClassNames = _useClassNames3.merge;
79
-
80
63
  var menuButtonTriggers = useMemo(function () {
81
64
  if (!trigger) {
82
65
  return undefined;
@@ -96,9 +79,6 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
96
79
  return triggerMap[t];
97
80
  });
98
81
  }, [trigger]);
99
- var parentMenu = useContext(MenuContext);
100
- var sidenav = useContext(SidenavContext);
101
- var navbar = useContext(NavbarContext);
102
82
 
103
83
  var _useReducer = useReducer(reducer, initialState),
104
84
  items = _useReducer[0].items,
@@ -112,54 +92,18 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
112
92
  var dropdownContextValue = useMemo(function () {
113
93
  return {
114
94
  activeKey: activeKey,
115
- onSelect: emitSelect,
95
+ onSelect: onSelect,
116
96
  hasSelectedItem: hasSelectedItem,
117
97
  dispatch: dispatch
118
98
  };
119
- }, [activeKey, emitSelect, hasSelectedItem, dispatch]); // Render a disclosure when inside expanded <Sidenav>
99
+ }, [activeKey, onSelect, hasSelectedItem, dispatch]); // Deprecate <Dropdown> within <Nav> usage
100
+ // in favor of <Nav.Menu> API
120
101
 
121
- if (sidenav !== null && sidenav !== void 0 && sidenav.expanded) {
122
- return /*#__PURE__*/React.createElement(DropdownContext.Provider, {
123
- value: dropdownContextValue
124
- }, /*#__PURE__*/React.createElement(SidenavDropdown, _extends({
102
+ if (nav) {
103
+ warnOnce('Usage of <Dropdown> within <Nav> is deprecated. Replace with <Nav.Menu>');
104
+ return /*#__PURE__*/React.createElement(Nav.Menu, _extends({
125
105
  ref: ref
126
- }, rest)));
127
- } // Renders a disclosure when used inside <Navbar>
128
-
129
-
130
- if (navbar) {
131
- return /*#__PURE__*/React.createElement(DropdownContext.Provider, {
132
- value: dropdownContextValue
133
- }, /*#__PURE__*/React.createElement(Disclosure, {
134
- hideOnClickOutside: true
135
- }, function (_ref, containerRef) {
136
- var _withClassPrefix;
137
-
138
- var open = _ref.open;
139
- var classes = merge(className, withClassPrefix((_withClassPrefix = {}, _withClassPrefix["placement-" + kebabCase(placementPolyfill(placement))] = !!placement, _withClassPrefix.disabled = disabled, _withClassPrefix.open = open, _withClassPrefix)));
140
- return /*#__PURE__*/React.createElement(Component, {
141
- ref: mergeRefs(ref, containerRef),
142
- className: classes,
143
- style: style
144
- }, /*#__PURE__*/React.createElement(Disclosure.Button, null, function (buttonProps, buttonRef) {
145
- return /*#__PURE__*/React.createElement(DropdownToggle, _extends({
146
- ref: buttonRef,
147
- as: toggleAs,
148
- className: toggleClassName,
149
- placement: placement,
150
- disabled: disabled
151
- }, omit(buttonProps, ['open']), toggleProps), title);
152
- }), /*#__PURE__*/React.createElement(Disclosure.Content, null, function (_ref2, elementRef) {
153
- var open = _ref2.open;
154
- var menuClassName = mergeMenuClassName(className, withMenuClassPrefix());
155
- return /*#__PURE__*/React.createElement("ul", {
156
- ref: elementRef,
157
- className: menuClassName,
158
- style: menuStyle,
159
- hidden: !open
160
- }, children);
161
- }));
162
- }));
106
+ }, props));
163
107
  }
164
108
 
165
109
  var renderMenuButton = function renderMenuButton(menuButtonProps, menuButtonRef) {
@@ -172,25 +116,6 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
172
116
  }, omit(menuButtonProps, ['open']), omit(toggleProps, ['data-testid'])), title);
173
117
  };
174
118
 
175
- if (parentMenu) {
176
- renderMenuButton = function renderMenuButton(menuButtonProps, buttonRef) {
177
- return /*#__PURE__*/React.createElement(MenuItem, {
178
- disabled: disabled
179
- }, function (_ref3, menuitemRef) {
180
- var active = _ref3.active,
181
- menuitemProps = _objectWithoutPropertiesLoose(_ref3, ["active"]);
182
-
183
- return /*#__PURE__*/React.createElement(DropdownToggle, _extends({
184
- ref: mergeRefs(buttonRef, menuitemRef),
185
- as: toggleAs,
186
- className: mergeNavItemClassNames(toggleClassName, withNavItemClassPrefix({
187
- focus: active
188
- }))
189
- }, menuButtonProps, omit(menuitemProps, ['onClick']), omit(toggleProps, 'data-testid')), title);
190
- });
191
- };
192
- }
193
-
194
119
  return /*#__PURE__*/React.createElement(DropdownContext.Provider, {
195
120
  value: dropdownContextValue
196
121
  }, /*#__PURE__*/React.createElement(Menu, {
@@ -199,25 +124,20 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
199
124
  menuButtonText: title,
200
125
  renderMenuButton: renderMenuButton,
201
126
  openMenuOn: menuButtonTriggers,
202
- renderMenuPopup: function renderMenuPopup(_ref4, popupRef) {
203
- var open = _ref4.open,
204
- popupProps = _objectWithoutPropertiesLoose(_ref4, ["open"]);
205
-
206
- var menuClassName = mergeMenuClassName(className, withMenuClassPrefix({})); // When inside a collapsed <Sidenav>, render a header in menu
127
+ renderMenuPopup: function renderMenuPopup(_ref, popupRef) {
128
+ var open = _ref.open,
129
+ popupProps = _objectWithoutPropertiesLoose(_ref, ["open"]);
207
130
 
208
- var showHeader = !!sidenav;
131
+ var menuClassName = mergeMenuClassName(className, withMenuClassPrefix({}));
209
132
  return /*#__PURE__*/React.createElement("ul", _extends({
210
133
  ref: popupRef,
211
134
  className: menuClassName,
212
135
  style: menuStyle,
213
136
  hidden: !open
214
- }, popupProps), showHeader && /*#__PURE__*/React.createElement("div", {
215
- className: prefix('header')
216
- }, title), children);
137
+ }, popupProps), children);
217
138
  },
218
- onToggleMenu: function onToggleMenu(open, event) {
139
+ onToggleMenu: function onToggleMenu(open) {
219
140
  onToggle === null || onToggle === void 0 ? void 0 : onToggle(open);
220
- sidenav === null || sidenav === void 0 ? void 0 : sidenav.onOpenChange(eventKey, event);
221
141
 
222
142
  if (open) {
223
143
  onOpen === null || onOpen === void 0 ? void 0 : onOpen();
@@ -225,13 +145,13 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
225
145
  onClose === null || onClose === void 0 ? void 0 : onClose();
226
146
  }
227
147
  }
228
- }, function (_ref5, menuContainerRef) {
229
- var _withClassPrefix2;
148
+ }, function (_ref2, menuContainerRef) {
149
+ var _withClassPrefix;
230
150
 
231
- var open = _ref5.open,
232
- menuContainer = _objectWithoutPropertiesLoose(_ref5, ["open"]);
151
+ var open = _ref2.open,
152
+ menuContainer = _objectWithoutPropertiesLoose(_ref2, ["open"]);
233
153
 
234
- var classes = merge(className, withClassPrefix((_withClassPrefix2 = {}, _withClassPrefix2["placement-" + kebabCase(placementPolyfill(placement))] = !!placement, _withClassPrefix2.disabled = disabled, _withClassPrefix2.open = open, _withClassPrefix2.submenu = !!parentMenu, _withClassPrefix2['selected-within'] = hasSelectedItem, _withClassPrefix2)));
154
+ var classes = merge(className, withClassPrefix((_withClassPrefix = {}, _withClassPrefix["placement-" + kebabCase(placementPolyfill(placement))] = !!placement, _withClassPrefix.disabled = disabled, _withClassPrefix.open = open, _withClassPrefix['selected-within'] = hasSelectedItem, _withClassPrefix)));
235
155
  return /*#__PURE__*/React.createElement(Component, _extends({
236
156
  ref: mergeRefs(ref, menuContainerRef),
237
157
  className: classes