@rc-component/portal 1.0.0-9 → 1.0.1
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.
- package/es/Portal.d.ts +2 -1
- package/es/Portal.js +29 -5
- package/es/useDom.js +2 -2
- package/es/useScrollLocker.js +1 -1
- package/lib/Portal.d.ts +2 -1
- package/lib/Portal.js +31 -5
- package/package.json +4 -3
package/es/Portal.d.ts
CHANGED
|
@@ -14,4 +14,5 @@ export interface PortalProps {
|
|
|
14
14
|
/** @private debug name. Do not use in prod */
|
|
15
15
|
debug?: string;
|
|
16
16
|
}
|
|
17
|
-
|
|
17
|
+
declare const Portal: React.ForwardRefExoticComponent<PortalProps & React.RefAttributes<any>>;
|
|
18
|
+
export default Portal;
|
package/es/Portal.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { createPortal } from 'react-dom';
|
|
4
4
|
import canUseDom from "rc-util/es/Dom/canUseDom";
|
|
5
|
+
import { supportRef, useComposeRef } from "rc-util/es/ref";
|
|
5
6
|
import OrderContext from "./Context";
|
|
6
7
|
import useDom from "./useDom";
|
|
7
8
|
import useScrollLocker from "./useScrollLocker";
|
|
@@ -27,7 +28,7 @@ var getPortalContainer = function getPortalContainer(getContainer) {
|
|
|
27
28
|
return getContainer;
|
|
28
29
|
};
|
|
29
30
|
|
|
30
|
-
|
|
31
|
+
var Portal = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
31
32
|
var open = props.open,
|
|
32
33
|
autoLock = props.autoLock,
|
|
33
34
|
getContainer = props.getContainer,
|
|
@@ -68,7 +69,16 @@ export default function Portal(props) {
|
|
|
68
69
|
|
|
69
70
|
var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer; // ========================= Locker ==========================
|
|
70
71
|
|
|
71
|
-
useScrollLocker(autoLock && open && canUseDom() && (mergedContainer === defaultContainer || mergedContainer === document.body)); //
|
|
72
|
+
useScrollLocker(autoLock && open && canUseDom() && (mergedContainer === defaultContainer || mergedContainer === document.body)); // =========================== Ref ===========================
|
|
73
|
+
|
|
74
|
+
var childRef = null;
|
|
75
|
+
|
|
76
|
+
if (children && supportRef(children) && ref) {
|
|
77
|
+
var _ref = children;
|
|
78
|
+
childRef = _ref.ref;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
var mergedRef = useComposeRef(childRef, ref); // ========================= Render ==========================
|
|
72
82
|
// Do not render when nothing need render
|
|
73
83
|
// When innerContainer is `undefined`, it may not ready since user use ref in the same render
|
|
74
84
|
|
|
@@ -78,7 +88,21 @@ export default function Portal(props) {
|
|
|
78
88
|
|
|
79
89
|
|
|
80
90
|
var renderInline = mergedContainer === false || inlineMock();
|
|
91
|
+
var reffedChildren = children;
|
|
92
|
+
|
|
93
|
+
if (ref) {
|
|
94
|
+
reffedChildren = /*#__PURE__*/React.cloneElement(children, {
|
|
95
|
+
ref: mergedRef
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
|
|
81
99
|
return /*#__PURE__*/React.createElement(OrderContext.Provider, {
|
|
82
100
|
value: queueCreate
|
|
83
|
-
}, renderInline ?
|
|
84
|
-
}
|
|
101
|
+
}, renderInline ? reffedChildren : /*#__PURE__*/createPortal(reffedChildren, mergedContainer));
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
105
|
+
Portal.displayName = 'Portal';
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export default Portal;
|
package/es/useDom.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import useLayoutEffect from "rc-util/es/hooks/useLayoutEffect";
|
|
5
5
|
import canUseDom from "rc-util/es/Dom/canUseDom";
|
package/es/useScrollLocker.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { updateCSS, removeCSS } from "rc-util/es/Dom/dynamicCSS";
|
|
4
4
|
import useLayoutEffect from "rc-util/es/hooks/useLayoutEffect";
|
package/lib/Portal.d.ts
CHANGED
|
@@ -14,4 +14,5 @@ export interface PortalProps {
|
|
|
14
14
|
/** @private debug name. Do not use in prod */
|
|
15
15
|
debug?: string;
|
|
16
16
|
}
|
|
17
|
-
|
|
17
|
+
declare const Portal: React.ForwardRefExoticComponent<PortalProps & React.RefAttributes<any>>;
|
|
18
|
+
export default Portal;
|
package/lib/Portal.js
CHANGED
|
@@ -7,7 +7,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
|
-
exports.default =
|
|
10
|
+
exports.default = void 0;
|
|
11
11
|
|
|
12
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
13
|
|
|
@@ -17,6 +17,8 @@ var _reactDom = require("react-dom");
|
|
|
17
17
|
|
|
18
18
|
var _canUseDom = _interopRequireDefault(require("rc-util/lib/Dom/canUseDom"));
|
|
19
19
|
|
|
20
|
+
var _ref2 = require("rc-util/lib/ref");
|
|
21
|
+
|
|
20
22
|
var _Context = _interopRequireDefault(require("./Context"));
|
|
21
23
|
|
|
22
24
|
var _useDom3 = _interopRequireDefault(require("./useDom"));
|
|
@@ -45,7 +47,7 @@ var getPortalContainer = function getPortalContainer(getContainer) {
|
|
|
45
47
|
return getContainer;
|
|
46
48
|
};
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
var Portal = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
49
51
|
var open = props.open,
|
|
50
52
|
autoLock = props.autoLock,
|
|
51
53
|
getContainer = props.getContainer,
|
|
@@ -86,7 +88,16 @@ function Portal(props) {
|
|
|
86
88
|
|
|
87
89
|
var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer; // ========================= Locker ==========================
|
|
88
90
|
|
|
89
|
-
(0, _useScrollLocker.default)(autoLock && open && (0, _canUseDom.default)() && (mergedContainer === defaultContainer || mergedContainer === document.body)); //
|
|
91
|
+
(0, _useScrollLocker.default)(autoLock && open && (0, _canUseDom.default)() && (mergedContainer === defaultContainer || mergedContainer === document.body)); // =========================== Ref ===========================
|
|
92
|
+
|
|
93
|
+
var childRef = null;
|
|
94
|
+
|
|
95
|
+
if (children && (0, _ref2.supportRef)(children) && ref) {
|
|
96
|
+
var _ref = children;
|
|
97
|
+
childRef = _ref.ref;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
var mergedRef = (0, _ref2.useComposeRef)(childRef, ref); // ========================= Render ==========================
|
|
90
101
|
// Do not render when nothing need render
|
|
91
102
|
// When innerContainer is `undefined`, it may not ready since user use ref in the same render
|
|
92
103
|
|
|
@@ -96,7 +107,22 @@ function Portal(props) {
|
|
|
96
107
|
|
|
97
108
|
|
|
98
109
|
var renderInline = mergedContainer === false || (0, _mock.inlineMock)();
|
|
110
|
+
var reffedChildren = children;
|
|
111
|
+
|
|
112
|
+
if (ref) {
|
|
113
|
+
reffedChildren = /*#__PURE__*/React.cloneElement(children, {
|
|
114
|
+
ref: mergedRef
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
99
118
|
return /*#__PURE__*/React.createElement(_Context.default.Provider, {
|
|
100
119
|
value: queueCreate
|
|
101
|
-
}, renderInline ?
|
|
102
|
-
}
|
|
120
|
+
}, renderInline ? reffedChildren : /*#__PURE__*/(0, _reactDom.createPortal)(reffedChildren, mergedContainer));
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
124
|
+
Portal.displayName = 'Portal';
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
var _default = Portal;
|
|
128
|
+
exports.default = _default;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rc-component/portal",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "React Portal Component",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -39,15 +39,16 @@
|
|
|
39
39
|
"test": "npm run test:client && npm run test:server",
|
|
40
40
|
"test:client": "umi-test --testPathIgnorePatterns=ssr.test.tsx --testPathIgnorePatterns=ssr.test.tsx",
|
|
41
41
|
"test:coverage": "npm run test:client --coverage",
|
|
42
|
-
"test:server": "umi-test --env=node tests/ssr.test.tsx",
|
|
42
|
+
"test:server": "umi-test --env=node -- tests/ssr.test.tsx",
|
|
43
43
|
"watch": "father dev"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"@babel/runtime": "^7.18.0",
|
|
47
47
|
"classnames": "^2.3.2",
|
|
48
|
-
"rc-util": "^5.
|
|
48
|
+
"rc-util": "^5.16.0"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
+
"@rc-component/father-plugin": "^1.0.0",
|
|
51
52
|
"@testing-library/jest-dom": "^5.16.4",
|
|
52
53
|
"@testing-library/react": "^13.0.0",
|
|
53
54
|
"@types/jest": "^26.0.20",
|