rsuite 5.16.0 → 5.16.3

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 (91) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/Form/styles/mixin.less +1 -1
  3. package/InputGroup/styles/index.less +8 -4
  4. package/Picker/styles/index.less +2 -0
  5. package/Slider/styles/index.less +2 -1
  6. package/TreePicker/styles/index.less +0 -3
  7. package/cjs/Cascader/utils.js +3 -5
  8. package/cjs/CheckPicker/CheckPicker.d.ts +2 -2
  9. package/cjs/CheckPicker/test/CheckPicker.test.js +15 -0
  10. package/cjs/CheckTreePicker/CheckTreePicker.d.ts +2 -2
  11. package/cjs/CheckTreePicker/CheckTreePicker.js +5 -0
  12. package/cjs/CheckTreePicker/test/CheckTreePicker.test.d.ts +1 -0
  13. package/cjs/CheckTreePicker/test/CheckTreePicker.test.js +15 -0
  14. package/cjs/CheckTreePicker/utils.js +3 -1
  15. package/cjs/CustomProvider/CustomProvider.js +6 -3
  16. package/cjs/DatePicker/DatePicker.d.ts +1 -1
  17. package/cjs/DatePicker/Toolbar.js +1 -1
  18. package/cjs/DateRangePicker/Calendar.d.ts +0 -1
  19. package/cjs/DateRangePicker/Calendar.js +1 -39
  20. package/cjs/DateRangePicker/DateRangePicker.d.ts +1 -1
  21. package/cjs/DateRangePicker/DateRangePicker.js +22 -22
  22. package/cjs/DateRangePicker/utils.d.ts +2 -1
  23. package/cjs/DateRangePicker/utils.js +12 -3
  24. package/cjs/InputPicker/InputPicker.d.ts +2 -2
  25. package/cjs/InputPicker/test/InputPicker.test.d.ts +1 -0
  26. package/cjs/InputPicker/test/InputPicker.test.js +15 -0
  27. package/cjs/MultiCascader/utils.js +3 -2
  28. package/cjs/Overlay/OverlayTrigger.js +1 -1
  29. package/cjs/Panel/Panel.js +8 -7
  30. package/cjs/Picker/DropdownMenu.d.ts +1 -1
  31. package/cjs/SelectPicker/SelectPicker.d.ts +10 -4
  32. package/cjs/SelectPicker/test/SelectPicker.test.js +40 -0
  33. package/cjs/Tree/Tree.d.ts +2 -2
  34. package/cjs/Tree/test/Tree.test.d.ts +1 -0
  35. package/cjs/Tree/test/Tree.test.js +18 -0
  36. package/cjs/TreePicker/TreePicker.d.ts +2 -2
  37. package/cjs/TreePicker/test/TreePicker.test.d.ts +1 -0
  38. package/cjs/TreePicker/test/TreePicker.test.js +15 -0
  39. package/cjs/utils/attachParent.d.ts +1 -0
  40. package/cjs/utils/attachParent.js +15 -0
  41. package/cjs/utils/treeUtils.js +3 -2
  42. package/cjs/utils/usePortal.d.ts +4 -2
  43. package/cjs/utils/usePortal.js +40 -14
  44. package/dist/rsuite-rtl.css +30 -27
  45. package/dist/rsuite-rtl.min.css +1 -1
  46. package/dist/rsuite-rtl.min.css.map +1 -1
  47. package/dist/rsuite.css +30 -27
  48. package/dist/rsuite.js +28 -17
  49. package/dist/rsuite.js.map +1 -1
  50. package/dist/rsuite.min.css +1 -1
  51. package/dist/rsuite.min.css.map +1 -1
  52. package/dist/rsuite.min.js +1 -1
  53. package/dist/rsuite.min.js.map +1 -1
  54. package/esm/Cascader/utils.js +2 -4
  55. package/esm/CheckPicker/CheckPicker.d.ts +2 -2
  56. package/esm/CheckPicker/test/CheckPicker.test.js +14 -0
  57. package/esm/CheckTreePicker/CheckTreePicker.d.ts +2 -2
  58. package/esm/CheckTreePicker/CheckTreePicker.js +5 -0
  59. package/esm/CheckTreePicker/test/CheckTreePicker.test.d.ts +1 -0
  60. package/esm/CheckTreePicker/test/CheckTreePicker.test.js +10 -0
  61. package/esm/CheckTreePicker/utils.js +2 -1
  62. package/esm/CustomProvider/CustomProvider.js +6 -3
  63. package/esm/DatePicker/DatePicker.d.ts +1 -1
  64. package/esm/DatePicker/Toolbar.js +1 -1
  65. package/esm/DateRangePicker/Calendar.d.ts +0 -1
  66. package/esm/DateRangePicker/Calendar.js +2 -41
  67. package/esm/DateRangePicker/DateRangePicker.d.ts +1 -1
  68. package/esm/DateRangePicker/DateRangePicker.js +22 -22
  69. package/esm/DateRangePicker/utils.d.ts +2 -1
  70. package/esm/DateRangePicker/utils.js +12 -3
  71. package/esm/InputPicker/InputPicker.d.ts +2 -2
  72. package/esm/InputPicker/test/InputPicker.test.d.ts +1 -0
  73. package/esm/InputPicker/test/InputPicker.test.js +10 -0
  74. package/esm/MultiCascader/utils.js +2 -2
  75. package/esm/Overlay/OverlayTrigger.js +1 -1
  76. package/esm/Panel/Panel.js +8 -7
  77. package/esm/Picker/DropdownMenu.d.ts +1 -1
  78. package/esm/SelectPicker/SelectPicker.d.ts +10 -4
  79. package/esm/SelectPicker/test/SelectPicker.test.js +38 -0
  80. package/esm/Tree/Tree.d.ts +2 -2
  81. package/esm/Tree/test/Tree.test.d.ts +1 -0
  82. package/esm/Tree/test/Tree.test.js +11 -0
  83. package/esm/TreePicker/TreePicker.d.ts +2 -2
  84. package/esm/TreePicker/test/TreePicker.test.d.ts +1 -0
  85. package/esm/TreePicker/test/TreePicker.test.js +10 -0
  86. package/esm/utils/attachParent.d.ts +1 -0
  87. package/esm/utils/attachParent.js +10 -0
  88. package/esm/utils/treeUtils.js +2 -2
  89. package/esm/utils/usePortal.d.ts +4 -2
  90. package/esm/utils/usePortal.js +36 -14
  91. package/package.json +1 -1
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
2
  import { PickerLocale } from '../locales';
3
- import { PickerComponent } from '../Picker';
3
+ import { PickerComponent, PickerToggleProps } from '../Picker';
4
4
  import { TreeDragProps, TreeBaseProps } from '../Tree/Tree';
5
5
  import { FormControlPickerProps, ItemDataType } from '../@types/common';
6
6
  export declare const maxTreeHeight = 320;
7
- export interface TreePickerProps<T = number | string> extends TreeBaseProps<T, ItemDataType>, TreeDragProps, FormControlPickerProps<T, PickerLocale, ItemDataType> {
7
+ export interface TreePickerProps<T = number | string> extends TreeBaseProps<T, ItemDataType>, TreeDragProps, FormControlPickerProps<T, PickerLocale, ItemDataType>, Pick<PickerToggleProps, 'caretAs'> {
8
8
  /** The height of Dropdown */
9
9
  height?: number;
10
10
  /** Tree node cascade */
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import TreePicker from '../TreePicker';
3
+
4
+ /*#__PURE__*/
5
+ React.createElement(TreePicker, {
6
+ caretAs: function caretAs() {
7
+ return /*#__PURE__*/React.createElement("div", null);
8
+ },
9
+ data: []
10
+ });
@@ -0,0 +1 @@
1
+ export declare function attachParent<T>(data: T, parent: T): T;
@@ -0,0 +1,10 @@
1
+ export function attachParent(data, parent) {
2
+ // mark "parent" unenumable
3
+ Object.defineProperty(data, 'parent', {
4
+ value: parent,
5
+ writable: false,
6
+ enumerable: false,
7
+ configurable: true
8
+ });
9
+ return data;
10
+ }
@@ -13,6 +13,7 @@ import { TREE_NODE_DROP_POSITION, shallowEqual } from '../utils';
13
13
  import { shouldDisplay } from '../Picker';
14
14
  import reactToString from './reactToString';
15
15
  import { TREE_NODE_PADDING, TREE_NODE_ROOT_PADDING } from './constants';
16
+ import { attachParent } from './attachParent';
16
17
  // gap of tree node
17
18
  var TREE_NODE_GAP = 4;
18
19
  /**
@@ -59,8 +60,7 @@ export function flattenTree(tree, childrenKey, executor) {
59
60
 
60
61
  data.forEach(function (item, index) {
61
62
  var node = typeof executor === 'function' ? executor(item, index) : item;
62
- node.parent = parent;
63
- flattenData.push(_extends({}, node));
63
+ flattenData.push(attachParent(node, parent));
64
64
 
65
65
  if (item[childrenKey]) {
66
66
  traverse(item[childrenKey], item);
@@ -1,10 +1,12 @@
1
1
  import React from 'react';
2
2
  interface PortalProps {
3
- id?: string;
4
3
  container?: HTMLElement | (() => HTMLElement | null) | null;
4
+ waitMount?: boolean;
5
5
  }
6
6
  declare function usePortal(props?: PortalProps): {
7
7
  target: HTMLElement | null;
8
- Portal: React.FC<any>;
8
+ Portal: ((props: any) => JSX.Element) | (({ children }: {
9
+ children: React.ReactNode;
10
+ }) => React.ReactPortal | null);
9
11
  };
10
12
  export default usePortal;
@@ -1,6 +1,25 @@
1
- import { useRef, useEffect, useCallback } from 'react';
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import React, { useRef, useEffect, useState, useCallback } from 'react';
2
3
  import { createPortal } from 'react-dom';
3
4
  import canUseDOM from 'dom-lib/canUseDOM';
5
+ var MountedPortal = /*#__PURE__*/React.memo(function (_ref) {
6
+ var children = _ref.children,
7
+ container = _ref.container;
8
+
9
+ var _useState = useState(false),
10
+ mounted = _useState[0],
11
+ setMounted = _useState[1];
12
+
13
+ useEffect(function () {
14
+ return setMounted(true);
15
+ }, []);
16
+
17
+ if (container && mounted) {
18
+ return /*#__PURE__*/createPortal(children, container);
19
+ }
20
+
21
+ return null;
22
+ });
4
23
 
5
24
  function usePortal(props) {
6
25
  if (props === void 0) {
@@ -8,25 +27,28 @@ function usePortal(props) {
8
27
  }
9
28
 
10
29
  var _props = props,
11
- id = _props.id,
12
- container = _props.container;
30
+ container = _props.container,
31
+ _props$waitMount = _props.waitMount,
32
+ waitMount = _props$waitMount === void 0 ? false : _props$waitMount;
13
33
  var rootElemRef = useRef(canUseDOM ? document.body : null);
14
34
  useEffect(function () {
15
- var containerElement = typeof container === 'function' ? container() : container; // Look for existing target dom element to append to
16
-
17
- var existingParent = id && document.querySelector("#" + id); // Parent is either a new root or the existing dom element
35
+ var containerElement = typeof container === 'function' ? container() : container; // Parent is either a new root or the existing dom element
18
36
 
19
- var parentElement = containerElement || existingParent || document.body;
37
+ var parentElement = containerElement || document.body;
20
38
  rootElemRef.current = parentElement;
21
- }, [rootElemRef, container, id]);
22
- var Portal = useCallback(function (_ref) {
23
- var children = _ref.children;
24
- if (rootElemRef.current != null) return /*#__PURE__*/createPortal(children, rootElemRef.current);
25
- return null;
26
- }, [rootElemRef]);
39
+ }, [rootElemRef, container]);
40
+ var Portal = useCallback(function (_ref2) {
41
+ var children = _ref2.children;
42
+ return rootElemRef.current != null ? /*#__PURE__*/createPortal(children, rootElemRef.current) : null;
43
+ }, []);
44
+ var WaitMountPortal = useCallback(function (props) {
45
+ return /*#__PURE__*/React.createElement(MountedPortal, _extends({
46
+ container: rootElemRef.current
47
+ }, props));
48
+ }, []);
27
49
  return {
28
50
  target: rootElemRef.current,
29
- Portal: Portal
51
+ Portal: waitMount ? WaitMountPortal : Portal
30
52
  };
31
53
  }
32
54
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rsuite",
3
- "version": "5.16.0",
3
+ "version": "5.16.3",
4
4
  "description": "A suite of react components",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",