@rc-component/trigger 3.7.0 → 3.7.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/index.js +4 -15
- package/lib/index.js +4 -15
- package/package.json +1 -1
package/es/index.js
CHANGED
|
@@ -16,6 +16,7 @@ import useWatch from "./hooks/useWatch";
|
|
|
16
16
|
import useWinClick from "./hooks/useWinClick";
|
|
17
17
|
import { getAlignPopupClassName } from "./util";
|
|
18
18
|
import UniqueProvider from "./UniqueProvider";
|
|
19
|
+
import { useControlledState } from '@rc-component/util';
|
|
19
20
|
export { UniqueProvider };
|
|
20
21
|
|
|
21
22
|
// Removed Props List
|
|
@@ -138,10 +139,8 @@ export function generateTrigger(PortalComponent = Portal) {
|
|
|
138
139
|
} : null;
|
|
139
140
|
|
|
140
141
|
// ============================ Open ============================
|
|
141
|
-
const [internalOpen, setInternalOpen] =
|
|
142
|
-
|
|
143
|
-
// Render still use props as first priority
|
|
144
|
-
const mergedOpen = popupVisible ?? internalOpen;
|
|
142
|
+
const [internalOpen, setInternalOpen] = useControlledState(defaultPopupVisible || false, popupVisible);
|
|
143
|
+
const mergedOpen = internalOpen || false;
|
|
145
144
|
|
|
146
145
|
// ========================== Children ==========================
|
|
147
146
|
const child = React.useMemo(() => {
|
|
@@ -152,18 +151,8 @@ export function generateTrigger(PortalComponent = Portal) {
|
|
|
152
151
|
}, [children, mergedOpen]);
|
|
153
152
|
const originChildProps = child?.props || {};
|
|
154
153
|
|
|
155
|
-
// We use effect sync here in case `popupVisible` back to `undefined`
|
|
156
|
-
const setMergedOpen = useEvent(nextOpen => {
|
|
157
|
-
if (openUncontrolled) {
|
|
158
|
-
setInternalOpen(nextOpen);
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
|
|
162
154
|
// Support ref
|
|
163
155
|
const isOpen = useEvent(() => mergedOpen);
|
|
164
|
-
useLayoutEffect(() => {
|
|
165
|
-
setInternalOpen(popupVisible || false);
|
|
166
|
-
}, [popupVisible]);
|
|
167
156
|
|
|
168
157
|
// Extract common options for UniqueProvider
|
|
169
158
|
const getUniqueOptions = useEvent((delay = 0) => ({
|
|
@@ -206,7 +195,7 @@ export function generateTrigger(PortalComponent = Portal) {
|
|
|
206
195
|
const lastTriggerRef = React.useRef([]);
|
|
207
196
|
lastTriggerRef.current = [];
|
|
208
197
|
const internalTriggerOpen = useEvent(nextOpen => {
|
|
209
|
-
|
|
198
|
+
setInternalOpen(nextOpen);
|
|
210
199
|
|
|
211
200
|
// Enter or Pointer will both trigger open state change
|
|
212
201
|
// We only need take one to avoid duplicated change event trigger
|
package/lib/index.js
CHANGED
|
@@ -29,6 +29,7 @@ var _useWatch = _interopRequireDefault(require("./hooks/useWatch"));
|
|
|
29
29
|
var _useWinClick = _interopRequireDefault(require("./hooks/useWinClick"));
|
|
30
30
|
var _util = require("./util");
|
|
31
31
|
var _UniqueProvider = _interopRequireDefault(require("./UniqueProvider"));
|
|
32
|
+
var _util2 = require("@rc-component/util");
|
|
32
33
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
33
34
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
34
35
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -152,10 +153,8 @@ function generateTrigger(PortalComponent = _portal.default) {
|
|
|
152
153
|
} : null;
|
|
153
154
|
|
|
154
155
|
// ============================ Open ============================
|
|
155
|
-
const [internalOpen, setInternalOpen] =
|
|
156
|
-
|
|
157
|
-
// Render still use props as first priority
|
|
158
|
-
const mergedOpen = popupVisible ?? internalOpen;
|
|
156
|
+
const [internalOpen, setInternalOpen] = (0, _util2.useControlledState)(defaultPopupVisible || false, popupVisible);
|
|
157
|
+
const mergedOpen = internalOpen || false;
|
|
159
158
|
|
|
160
159
|
// ========================== Children ==========================
|
|
161
160
|
const child = React.useMemo(() => {
|
|
@@ -166,18 +165,8 @@ function generateTrigger(PortalComponent = _portal.default) {
|
|
|
166
165
|
}, [children, mergedOpen]);
|
|
167
166
|
const originChildProps = child?.props || {};
|
|
168
167
|
|
|
169
|
-
// We use effect sync here in case `popupVisible` back to `undefined`
|
|
170
|
-
const setMergedOpen = (0, _useEvent.default)(nextOpen => {
|
|
171
|
-
if (openUncontrolled) {
|
|
172
|
-
setInternalOpen(nextOpen);
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
|
|
176
168
|
// Support ref
|
|
177
169
|
const isOpen = (0, _useEvent.default)(() => mergedOpen);
|
|
178
|
-
(0, _useLayoutEffect.default)(() => {
|
|
179
|
-
setInternalOpen(popupVisible || false);
|
|
180
|
-
}, [popupVisible]);
|
|
181
170
|
|
|
182
171
|
// Extract common options for UniqueProvider
|
|
183
172
|
const getUniqueOptions = (0, _useEvent.default)((delay = 0) => ({
|
|
@@ -220,7 +209,7 @@ function generateTrigger(PortalComponent = _portal.default) {
|
|
|
220
209
|
const lastTriggerRef = React.useRef([]);
|
|
221
210
|
lastTriggerRef.current = [];
|
|
222
211
|
const internalTriggerOpen = (0, _useEvent.default)(nextOpen => {
|
|
223
|
-
|
|
212
|
+
setInternalOpen(nextOpen);
|
|
224
213
|
|
|
225
214
|
// Enter or Pointer will both trigger open state change
|
|
226
215
|
// We only need take one to avoid duplicated change event trigger
|