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
@@ -0,0 +1,16 @@
1
+ var _whisperRef$current, _whisperRef$current2, _whisperRef$current3, _whisperRef$current4, _whisperRef$current5;
2
+
3
+ import React from 'react';
4
+ import Whisper from '../Whisper';
5
+ var whisperRef = /*#__PURE__*/React.createRef();
6
+
7
+ /*#__PURE__*/
8
+ React.createElement(Whisper, {
9
+ ref: whisperRef,
10
+ speaker: /*#__PURE__*/React.createElement("div", null)
11
+ }, /*#__PURE__*/React.createElement("div", null));
12
+ (_whisperRef$current = whisperRef.current) === null || _whisperRef$current === void 0 ? void 0 : _whisperRef$current.open();
13
+ (_whisperRef$current2 = whisperRef.current) === null || _whisperRef$current2 === void 0 ? void 0 : _whisperRef$current2.open(300);
14
+ (_whisperRef$current3 = whisperRef.current) === null || _whisperRef$current3 === void 0 ? void 0 : _whisperRef$current3.close();
15
+ (_whisperRef$current4 = whisperRef.current) === null || _whisperRef$current4 === void 0 ? void 0 : _whisperRef$current4.close(300);
16
+ (_whisperRef$current5 = whisperRef.current) === null || _whisperRef$current5 === void 0 ? void 0 : _whisperRef$current5.updatePosition();
package/esm/index.d.ts CHANGED
@@ -7,7 +7,7 @@ export type { ButtonToolbarProps } from './ButtonToolbar';
7
7
  export { default as ButtonGroup } from './ButtonGroup';
8
8
  export type { ButtonGroupProps } from './ButtonGroup';
9
9
  export { default as Whisper } from './Whisper';
10
- export type { WhisperProps } from './Whisper';
10
+ export type { WhisperProps, WhisperInstance } from './Whisper';
11
11
  export { default as Tooltip } from './Tooltip';
12
12
  export type { TooltipProps } from './Tooltip';
13
13
  export { default as Popover } from './Popover';
@@ -32,7 +32,7 @@ export { default as Avatar } from './Avatar';
32
32
  export type { AvatarProps } from './Avatar';
33
33
  export { default as AvatarGroup } from './AvatarGroup';
34
34
  export type { AvatarGroupProps } from './AvatarGroup';
35
- export { default as toaster } from './toaster';
35
+ export { default as toaster, useToaster } from './toaster';
36
36
  export type { Toaster } from './toaster';
37
37
  export { default as Dropdown } from './Dropdown';
38
38
  export type { DropdownProps, DropdownMenuItemProps, DropdownMenuProps } from './Dropdown';
@@ -51,7 +51,7 @@ export type { StepsProps, StepItemProps } from './Steps';
51
51
  export { default as Toggle } from './Toggle';
52
52
  export type { ToggleProps } from './Toggle';
53
53
  export { default as Form, useFormClassNames } from './Form';
54
- export type { FormProps, FormGroupProps, FormErrorMessageProps, FormControlLabelProps, FormHelpTextProps, FormControlProps } from './Form';
54
+ export type { FormProps, FormInstance, FormGroupProps, FormErrorMessageProps, FormControlLabelProps, FormHelpTextProps, FormControlProps } from './Form';
55
55
  export { default as Input } from './Input';
56
56
  export type { InputProps } from './Input';
57
57
  export { default as MaskedInput } from './MaskedInput';
package/esm/index.js CHANGED
@@ -16,7 +16,7 @@ export { default as Placeholder } from './Placeholder';
16
16
  export { default as Badge } from './Badge';
17
17
  export { default as Avatar } from './Avatar';
18
18
  export { default as AvatarGroup } from './AvatarGroup';
19
- export { default as toaster } from './toaster';
19
+ export { default as toaster, useToaster } from './toaster';
20
20
  // Nav
21
21
  export { default as Dropdown } from './Dropdown';
22
22
  export { default as Nav } from './Nav';
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
3
3
  export declare type PlacementType = 'topCenter' | 'bottomCenter' | 'topStart' | 'topEnd' | 'bottomStart' | 'bottomEnd';
4
+ export declare const toastPlacements: PlacementType[];
4
5
  export interface ToastContainerProps extends WithAsProps {
5
6
  /** The placement of the message box */
6
7
  placement?: PlacementType;
@@ -6,6 +6,7 @@ import PropTypes from 'prop-types';
6
6
  import kebabCase from 'lodash/kebabCase';
7
7
  import Transition from '../Animation/Transition';
8
8
  import { useClassNames, guid, createChainedFunction } from '../utils';
9
+ export var toastPlacements = ['topCenter', 'bottomCenter', 'topStart', 'topEnd', 'bottomStart', 'bottomEnd'];
9
10
 
10
11
  var useMessages = function useMessages() {
11
12
  var _useState = useState([]),
@@ -1,3 +1,4 @@
1
1
  import toaster from './toaster';
2
2
  export type { Toaster } from './toaster';
3
+ export { default as useToaster } from './useToaster';
3
4
  export default toaster;
@@ -1,2 +1,3 @@
1
1
  import toaster from './toaster';
2
+ export { default as useToaster } from './useToaster';
2
3
  export default toaster;
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
2
  import { ToastContainerProps } from './ToastContainer';
3
- export declare type PlacementType = 'topStart' | 'topEnd' | 'bottomStart' | 'bottomEnd';
4
3
  export interface Toaster {
5
4
  /**
6
5
  * Add a message to the container.
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { ToastContainerProps } from './ToastContainer';
3
+ /**
4
+ * Hook to use the toaster
5
+ * @returns toaster { push, remove, clear }
6
+ */
7
+ declare const useToaster: () => {
8
+ push: (message: React.ReactNode, options?: ToastContainerProps) => string | undefined;
9
+ remove: (key: string) => void;
10
+ clear: () => void;
11
+ };
12
+ export default useToaster;
@@ -0,0 +1,34 @@
1
+ import toaster from './toaster';
2
+ import { useCustom } from '../utils';
3
+ /**
4
+ * Hook to use the toaster
5
+ * @returns toaster { push, remove, clear }
6
+ */
7
+
8
+ var useToaster = function useToaster() {
9
+ var _useCustom = useCustom(),
10
+ toasters = _useCustom.toasters;
11
+
12
+ return {
13
+ push: function push(message, options) {
14
+ var _toasters$current;
15
+
16
+ var customToaster = toasters === null || toasters === void 0 ? void 0 : (_toasters$current = toasters.current) === null || _toasters$current === void 0 ? void 0 : _toasters$current.get((options === null || options === void 0 ? void 0 : options.placement) || 'topCenter');
17
+ return customToaster ? customToaster.push(message) : toaster.push(message, options);
18
+ },
19
+ remove: function remove(key) {
20
+ toasters ? Array.from(toasters.current).forEach(function (_ref) {
21
+ var c = _ref[1];
22
+ return c === null || c === void 0 ? void 0 : c.remove(key);
23
+ }) : toaster.remove(key);
24
+ },
25
+ clear: function clear() {
26
+ toasters ? Array.from(toasters.current).forEach(function (_ref2) {
27
+ var c = _ref2[1];
28
+ return c === null || c === void 0 ? void 0 : c.clear();
29
+ }) : toaster.clear();
30
+ }
31
+ };
32
+ };
33
+
34
+ export default useToaster;
@@ -1,4 +1,5 @@
1
1
  export declare const SIZE: string[];
2
+ export declare const COLUMN_SIZE: string[];
2
3
  export declare const STATUS: string[];
3
4
  export declare const COLOR: string[];
4
5
  export declare const PLACEMENT_4: readonly ["top", "bottom", "right", "left"];
@@ -1,4 +1,5 @@
1
1
  export var SIZE = ['lg', 'md', 'sm', 'xs'];
2
+ export var COLUMN_SIZE = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];
2
3
  export var STATUS = ['success', 'warning', 'error', 'info'];
3
4
  export var COLOR = ['red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'violet'];
4
5
  export var PLACEMENT_4 = ['top', 'bottom', 'right', 'left'];
@@ -1,5 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import React, { useEffect } from 'react';
2
+ import React from 'react';
3
+ import warnOnce from './warnOnce';
3
4
  /**
4
5
  * HOC for display a deprecation message from a deprecated component
5
6
  * fixme: Only display deprecation message in non-production environment
@@ -10,9 +11,7 @@ export default function deprecateComponent(Component, message) {
10
11
 
11
12
  var componentDisplayName = (_Component$displayNam = Component.displayName) !== null && _Component$displayNam !== void 0 ? _Component$displayNam : Component.name;
12
13
  var Deprecated = /*#__PURE__*/React.forwardRef(function (props, ref) {
13
- useEffect(function () {
14
- console.warn(message);
15
- }, []);
14
+ warnOnce(message);
16
15
  return /*#__PURE__*/React.createElement(Component, _extends({
17
16
  ref: ref
18
17
  }, props));
@@ -1,6 +1,2 @@
1
1
  import * as PropTypes from 'prop-types';
2
- declare function deprecatePropType<T extends PropTypes.Validator<any>>(propType: T, explanation?: string): typeof propType;
3
- declare namespace deprecatePropType {
4
- var _resetWarned: () => void;
5
- }
6
- export default deprecatePropType;
2
+ export default function deprecatePropType<T extends PropTypes.Validator<any>>(propType: T, explanation?: string): typeof propType;
@@ -1,15 +1,11 @@
1
1
  // Ref: https://github.com/thefrontside/deprecated-prop-type/blob/master/deprecated.js
2
- var warned = {};
2
+ import warnOnce from './warnOnce';
3
3
  export default function deprecatePropType(propType, explanation) {
4
4
  return function validate(props, propName, componentName) {
5
5
  // Note ...rest here
6
6
  if (props[propName] != null) {
7
7
  var message = "\"" + propName + "\" property of \"" + componentName + "\" has been deprecated.\n" + explanation;
8
-
9
- if (!warned[message]) {
10
- console.warn(message);
11
- warned[message] = true;
12
- }
8
+ warnOnce(message);
13
9
  }
14
10
 
15
11
  for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
@@ -18,10 +14,4 @@ export default function deprecatePropType(propType, explanation) {
18
14
 
19
15
  return propType.apply(void 0, [props, propName, componentName].concat(rest)); // and here
20
16
  };
21
- }
22
-
23
- function _resetWarned() {
24
- warned = {};
25
- }
26
-
27
- deprecatePropType._resetWarned = _resetWarned;
17
+ }
@@ -1,2 +1,2 @@
1
- declare const _default: (value: any, labelKey?: string | undefined, valueKey?: string | undefined) => object | null;
1
+ declare const _default: (value: any, labelKey?: string, valueKey?: string) => object | null;
2
2
  export default _default;
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
- declare const _default: (pattern: string, ...data: any[]) => React.ReactNode;
3
2
  /**
4
3
  * tplTransform('Show {0} data', <i>100</i>);
5
4
  * output:
6
5
  * Show <span><i>100</i></span> data
7
6
  */
7
+ declare const _default: (pattern: string, ...data: any[]) => React.ReactNode;
8
8
  export default _default;
@@ -70,7 +70,7 @@ export declare function filterNodesOfTree(data: any, check: any): TreeNodeType[]
70
70
  * @param isSearching - component is in Searching
71
71
  * @returns
72
72
  */
73
- export declare const getFocusableItems: (filteredData: ItemDataType[], props: Required<Pick<PartialTreeProps, 'disabledItemValues' | 'valueKey' | 'childrenKey' | 'expandItemValues'>>, isSearching?: boolean | undefined) => TreeNodeType[];
73
+ export declare const getFocusableItems: (filteredData: ItemDataType[], props: Required<Pick<PartialTreeProps, 'disabledItemValues' | 'valueKey' | 'childrenKey' | 'expandItemValues'>>, isSearching?: boolean) => TreeNodeType[];
74
74
  /**
75
75
  * return all focusable Item and active Element index
76
76
  * @param focusItemValue
@@ -190,7 +190,7 @@ interface UnSerializeListProps {
190
190
  export declare function useFlattenTreeData({ data, labelKey, valueKey, childrenKey, uncheckableItemValues, callback }: FlattenTreeDataProps): {
191
191
  forceUpdate: () => void;
192
192
  flattenNodes: TreeNodesType;
193
- flattenTreeData: (treeData: TreeNodeType[], ref: string, parent?: TreeNodeType | undefined, layer?: any) => never[] | undefined;
193
+ flattenTreeData: (treeData: TreeNodeType[], ref: string, parent?: TreeNodeType, layer?: any) => never[] | undefined;
194
194
  serializeListOnlyParent: (nodes: TreeNodesType, key: string) => (string | number)[];
195
195
  unSerializeList: ({ nodes, key, value, cascade, uncheckableItemValues }: UnSerializeListProps) => void;
196
196
  formatVirtualizedTreeData: (nodes: TreeNodesType, data: any[], expandItemValues: ItemDataType[], options: {
@@ -203,7 +203,7 @@ export declare function useFlattenTreeData({ data, labelKey, valueKey, childrenK
203
203
  */
204
204
  export declare function useTreeNodeRefs(): {
205
205
  treeNodesRefs: {};
206
- saveTreeNodeRef: (ref: React.Ref<any>, refKey?: string | undefined) => void;
206
+ saveTreeNodeRef: (ref: React.Ref<any>, refKey?: string) => void;
207
207
  };
208
208
  interface TreeSearchProps {
209
209
  labelKey: string;
@@ -686,11 +686,7 @@ export function useFlattenTreeData(_ref8) {
686
686
  var forceUpdate = useCallback(function () {
687
687
  dispatch(Object.create(null));
688
688
  }, [dispatch]);
689
-
690
- var _useRef = useRef({}),
691
- _useRef$current = _useRef.current,
692
- flattenNodes = _useRef$current === void 0 ? {} : _useRef$current;
693
-
689
+ var flattenNodes = useRef({});
694
690
  var flattenTreeData = useCallback(function (treeData, ref, parent, layer) {
695
691
  if (layer === void 0) {
696
692
  layer = 1;
@@ -705,20 +701,20 @@ export function useFlattenTreeData(_ref8) {
705
701
 
706
702
  var refKey = ref + "-" + index;
707
703
  node.refKey = refKey;
708
- flattenNodes[refKey] = _extends((_extends2 = {
704
+ flattenNodes.current[refKey] = _extends((_extends2 = {
709
705
  layer: layer
710
706
  }, _extends2[labelKey] = node[labelKey], _extends2[valueKey] = node[valueKey], _extends2.uncheckable = uncheckableItemValues.some(function (value) {
711
707
  return shallowEqual(node[valueKey], value);
712
708
  }), _extends2), node);
713
709
 
714
710
  if (parent) {
715
- flattenNodes[refKey].parent = _omit(parent, 'parent', 'children');
711
+ flattenNodes.current[refKey].parent = _omit(parent, 'parent', 'children');
716
712
  }
717
713
 
718
714
  flattenTreeData(node[childrenKey], refKey, node, layer + 1);
719
715
  });
720
- callback === null || callback === void 0 ? void 0 : callback(flattenNodes);
721
- }, [childrenKey, valueKey, labelKey, callback, uncheckableItemValues, flattenNodes]);
716
+ callback === null || callback === void 0 ? void 0 : callback(flattenNodes.current);
717
+ }, [childrenKey, valueKey, labelKey, callback, uncheckableItemValues]);
722
718
  var serializeListOnlyParent = useCallback(function (nodes, key) {
723
719
  var list = [];
724
720
  Object.keys(nodes).forEach(function (refKey) {
@@ -819,12 +815,14 @@ export function useFlattenTreeData(_ref8) {
819
815
  };
820
816
 
821
817
  useEffect(function () {
818
+ // when data is changed, should clear the flattenNodes, avoid duplicate keys
819
+ flattenNodes.current = {};
822
820
  flattenTreeData(data, '0');
823
821
  }, [data]); // eslint-disable-line react-hooks/exhaustive-deps
824
822
 
825
823
  return {
826
824
  forceUpdate: forceUpdate,
827
- flattenNodes: flattenNodes,
825
+ flattenNodes: flattenNodes.current,
828
826
  flattenTreeData: flattenTreeData,
829
827
  serializeListOnlyParent: serializeListOnlyParent,
830
828
  unSerializeList: unSerializeList,
@@ -3,5 +3,5 @@ import { CustomValue } from '../CustomProvider/CustomProvider';
3
3
  * A hook to get custom configuration of `<CustomProvider>`
4
4
  * @param keys
5
5
  */
6
- declare function useCustom<T = any>(keys: string | string[], overrideLocale?: any): CustomValue<T>;
6
+ declare function useCustom<T = any>(keys?: string | string[], overrideLocale?: any): CustomValue<T>;
7
7
  export default useCustom;
@@ -29,11 +29,12 @@ function useCustom(keys, overrideLocale) {
29
29
  _useContext$rtl = _useContext.rtl,
30
30
  rtl = _useContext$rtl === void 0 ? getDefaultRTL() : _useContext$rtl,
31
31
  formatDate = _useContext.formatDate,
32
- parseDate = _useContext.parseDate;
32
+ parseDate = _useContext.parseDate,
33
+ toasters = _useContext.toasters;
33
34
 
34
- var componentLocale = _extends({}, locale === null || locale === void 0 ? void 0 : locale.common, typeof keys === 'string' ? locale === null || locale === void 0 ? void 0 : locale[keys] : mergeObject(keys.map(function (key) {
35
+ var componentLocale = _extends({}, locale === null || locale === void 0 ? void 0 : locale.common, typeof keys === 'string' ? locale === null || locale === void 0 ? void 0 : locale[keys] : typeof keys === 'object' ? mergeObject(keys.map(function (key) {
35
36
  return locale === null || locale === void 0 ? void 0 : locale[key];
36
- }))); // Component custom locale
37
+ })) : {}); // Component custom locale
37
38
 
38
39
 
39
40
  if (overrideLocale) {
@@ -57,6 +58,7 @@ function useCustom(keys, overrideLocale) {
57
58
  return {
58
59
  locale: componentLocale,
59
60
  rtl: rtl,
61
+ toasters: toasters,
60
62
  formatDate: formatDate || defaultFormatDate,
61
63
  parseDate: parseDate || defaultParseDate
62
64
  };
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
  export default function useFocus<E extends HTMLElement>(elementRef: React.RefObject<E>): {
3
3
  grab: () => void;
4
- release: (options?: FocusOptions | undefined) => void;
4
+ release: (options?: FocusOptions) => void;
5
5
  };
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * Used for generating unique ID for DOM elements
3
3
  */
4
- export default function useInternalId(prefix?: string): string;
4
+ export default function useInternalId(namespace?: string): string;
@@ -4,11 +4,11 @@ import uniqueId from 'lodash/uniqueId';
4
4
  * Used for generating unique ID for DOM elements
5
5
  */
6
6
 
7
- export default function useInternalId(prefix) {
7
+ export default function useInternalId(namespace) {
8
8
  var idRef = useRef();
9
9
 
10
10
  if (!idRef.current) {
11
- idRef.current = uniqueId("internal://" + prefix);
11
+ idRef.current = uniqueId("internal://" + namespace);
12
12
  }
13
13
 
14
14
  useDebugValue(idRef.current);
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Logs a warning message
3
+ * but dont warn a same message twice
4
+ */
5
+ declare function warnOnce(message: string): void;
6
+ declare namespace warnOnce {
7
+ var _resetWarned: () => void;
8
+ }
9
+ export default warnOnce;
@@ -0,0 +1,18 @@
1
+ var warned = {};
2
+ /**
3
+ * Logs a warning message
4
+ * but dont warn a same message twice
5
+ */
6
+
7
+ export default function warnOnce(message) {
8
+ if (!warned[message]) {
9
+ console.warn(message);
10
+ warned[message] = true;
11
+ }
12
+ }
13
+
14
+ warnOnce._resetWarned = function () {
15
+ for (var _message in warned) {
16
+ delete warned[_message];
17
+ }
18
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rsuite",
3
- "version": "5.12.0",
3
+ "version": "5.14.0",
4
4
  "description": "A suite of react components",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",
@@ -167,15 +167,18 @@
167
167
  --rs-sidenav-default-selected-text: @H500;
168
168
  --rs-sidenav-default-hover-bg: @B700;
169
169
  --rs-sidenav-default-hover-text: @B050;
170
+ --rs-sidenav-default-footer-border: @B600;
170
171
  --rs-sidenav-inverse-bg: @H700;
171
172
  --rs-sidenav-inverse-text: #fff;
172
173
  --rs-sidenav-inverse-selected-bg: @H400;
173
174
  --rs-sidenav-inverse-hover-bg: @H600;
175
+ --rs-sidenav-inverse-footer-border: @H600;
174
176
  --rs-sidenav-subtle-bg: transparent;
175
177
  --rs-sidenav-subtle-text: @B200;
176
178
  --rs-sidenav-subtle-selected-text: @H500;
177
179
  --rs-sidenav-subtle-hover-bg: @B700;
178
180
  --rs-sidenav-subtle-hover-text: @B050;
181
+ --rs-sidenav-subtle-footer-border: @B600;
179
182
 
180
183
  // Input
181
184
  --rs-input-bg: @B800;
@@ -175,16 +175,19 @@
175
175
  --rs-sidenav-default-selected-text: @H500;
176
176
  --rs-sidenav-default-hover-bg: transparent;
177
177
  --rs-sidenav-default-hover-text: @H500;
178
+ --rs-sidenav-default-footer-border: @B050;
178
179
  --rs-sidenav-inverse-bg: @B800;
179
180
  --rs-sidenav-inverse-text: @B050;
180
181
  --rs-sidenav-inverse-selected-bg: transparent;
181
182
  --rs-sidenav-inverse-selected-text: @H500;
182
183
  --rs-sidenav-inverse-hover-bg: transparent;
184
+ --rs-sidenav-inverse-footer-border: @B050;
183
185
  --rs-sidenav-subtle-bg: @B800;
184
186
  --rs-sidenav-subtle-text: @B050;
185
187
  --rs-sidenav-subtle-selected-text: @H500;
186
188
  --rs-sidenav-subtle-hover-bg: transparent;
187
189
  --rs-sidenav-subtle-hover-text: @H500;
190
+ --rs-sidenav-subtle-footer-border: @B050;
188
191
 
189
192
  // Input
190
193
  --rs-input-bg: @B800;
@@ -120,8 +120,8 @@
120
120
 
121
121
  // Dropdown
122
122
  --rs-dropdown-divider: @B200;
123
- --rs-dropdown-item-bg-hover: @H050;
124
- --rs-dropdown-item-bg-active: fade(@H050, 50);
123
+ --rs-dropdown-item-bg-hover: fade(@H100, 50%);
124
+ --rs-dropdown-item-bg-active: @H050;
125
125
  --rs-dropdown-item-text-active: @H700;
126
126
  --rs-dropdown-header-text: @B500;
127
127
  --rs-dropdown-shadow: 0 0 10px rgba(0, 0, 0, 0.06), 0 4px 4px rgba(0, 0, 0, 0.12);
@@ -174,15 +174,18 @@
174
174
  --rs-sidenav-default-selected-text: @H700;
175
175
  --rs-sidenav-default-hover-bg: @B200;
176
176
  --rs-sidenav-default-hover-text: @B800;
177
+ --rs-sidenav-default-footer-border: @B200;
177
178
  --rs-sidenav-inverse-bg: @H500;
178
179
  --rs-sidenav-inverse-text: #fff;
179
180
  --rs-sidenav-inverse-selected-bg: @H700;
180
181
  --rs-sidenav-inverse-hover-bg: @H600;
182
+ --rs-sidenav-inverse-footer-border: @H600;
181
183
  --rs-sidenav-subtle-bg: #fff;
182
184
  --rs-sidenav-subtle-text: @B600;
183
185
  --rs-sidenav-subtle-selected-text: @H700;
184
186
  --rs-sidenav-subtle-hover-bg: @B050;
185
187
  --rs-sidenav-subtle-hover-text: @B800;
188
+ --rs-sidenav-subtle-footer-border: @B200;
186
189
 
187
190
  // Input
188
191
  --rs-input-bg: @B000;
@@ -23,17 +23,25 @@
23
23
  // Media queries breakpoints
24
24
  // Define the breakpoints at which your layout will change, adapting to different screen sizes.
25
25
 
26
- // Extra small screen / phone
27
- // @screen-xs
28
- @screen-phone: 480px;
26
+ // Small screen / phone
27
+ // @screen-sm
28
+ @screen-sm: 576px;
29
29
 
30
30
  // Medium screen / desktop
31
31
  // @screen-md
32
- @screen-desktop: 992px;
32
+ @screen-md: 768px;
33
33
 
34
34
  // Large screen / wide desktop
35
35
  // @screen-lg
36
- @screen-lg-desktop: 1200px;
36
+ @screen-lg: 992px;
37
+
38
+ // Extra large devices / extra wide desktop
39
+ // @screen-xl
40
+ @screen-xl: 1200px;
41
+
42
+ // Extra extra large devices / ultra wide desktop
43
+ // @screen-xxl
44
+ @screen-xxl: 1400px;
37
45
 
38
46
 
39
47
  // Grid system
@@ -48,16 +56,24 @@
48
56
  // Define the maximum width of `.container` for different screen sizes.
49
57
 
50
58
  // Small screen / phone / tablet
51
- @container-phone: (480px + @grid-gutter-width);
52
- @container-sm: @container-phone;
59
+ @container-phone: (540px + @grid-gutter-width);
60
+ @container-sm: @container-phone;
53
61
 
54
62
  // Medium screen / desktop
55
- @container-desktop: (940px + @grid-gutter-width);
56
- @container-md: @container-desktop;
63
+ @container-desktop: (720px + @grid-gutter-width);
64
+ @container-md: @container-desktop;
57
65
 
58
66
  // Large screen / wide desktop
59
- @container-large-desktop: (1140px + @grid-gutter-width);
60
- @container-lg: @container-large-desktop;
67
+ @container-large-desktop: (960px + @grid-gutter-width);
68
+ @container-lg: @container-large-desktop;
69
+
70
+ // Extra large devices / ultra wide desktop
71
+ @container-extra-large-desktop: (1140px + @grid-gutter-width);
72
+ @container-xl: @container-large-desktop;
73
+
74
+ // Extra large devices / ultra wide desktop
75
+ @container-extra-extra-large-desktop: (1320px + @grid-gutter-width);
76
+ @container-xxl: @container-large-desktop;
61
77
 
62
78
  // Color system
63
79
 
@@ -199,7 +215,6 @@
199
215
  @table-header-sort-wrapper-margin-left: 5px;
200
216
 
201
217
  @table-column-resize-spanner-width: 3px;
202
- @table-column-resize-spanner-gap-width: 3px;
203
218
  @table-column-resize-spanner-triangle-side-length: 3px;
204
219
 
205
220
  @table-body-content-padding-vertical: 13px; // @deprecated use @table-cell-padding-y instead
@@ -323,6 +338,9 @@
323
338
  @dropdown-divider-bg: @divider-border-color;
324
339
  @dropdown-shadow: 0 0 10px rgba(0, 0, 0, 0.06), 0 4px 4px rgba(0, 0, 0, 0.12);
325
340
 
341
+ @dropdown-menu-radius: @border-radius;
342
+ @dropdown-menu-padding-y: @dropdown-menu-radius;
343
+
326
344
  @dropdown-item-padding-vertical: 8px; // @deprecated use @dropdown-item-padding-y instead
327
345
  @dropdown-item-padding-horizontal: 12px; // @deprecated use @dropdown-item-padding-x instead
328
346
 
@@ -394,14 +412,17 @@
394
412
 
395
413
  // Sidenav
396
414
 
415
+ @sidenav-item-caret-size: 16px;
397
416
  @sidenav-padding-vertical: 15px;
398
417
  @sidenav-children-padding-vertical: 11px;
399
418
  @sidenav-padding-horizontal: 20px;
400
419
  @sidenav-collapse-in-width: 100%;
401
420
  @sidenav-default-width: 56px;
421
+ @sidenav-compact-width: @sidenav-default-width; // TODO Replace sidenav-default-width
402
422
  @sidenav-item-height: (@sidenav-padding-vertical * 2 + @line-height-computed);
403
423
  @sidenav-menu-max-height: (@sidenav-item-height * 40);
404
424
  @sidenav-menu-animation-time: 1.5s;
425
+ @sidenav-footer-height: @sidenav-item-height; // Footer is same height as a sidenav item
405
426
  @sidenav-level1-item-font-size: @font-size-large;
406
427
  @sidenav-level1-item-line-height: unit((@line-height-computed / @font-size-large));
407
428
  @sidenav-icon-spacing: 20px;