@rc-component/trigger 2.0.0-0 → 2.1.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.
- package/es/Popup/index.js +1 -1
- package/es/hooks/useAlign.js +6 -3
- package/es/hooks/useWinClick.js +16 -57
- package/es/index.d.ts +3 -1
- package/es/index.js +37 -20
- package/es/mock.js +2 -2
- package/lib/Popup/PopupContent.js +1 -2
- package/lib/Popup/index.js +2 -3
- package/lib/TriggerWrapper.js +1 -2
- package/lib/context.js +1 -2
- package/lib/hooks/useAlign.js +6 -3
- package/lib/hooks/useWinClick.js +17 -59
- package/lib/index.d.ts +3 -1
- package/lib/index.js +36 -22
- package/lib/mock.js +3 -4
- package/package.json +13 -16
package/es/Popup/index.js
CHANGED
|
@@ -147,7 +147,7 @@ var Popup = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
147
147
|
visible: open,
|
|
148
148
|
onVisibleChanged: function onVisibleChanged(nextVisible) {
|
|
149
149
|
var _motion$onVisibleChan;
|
|
150
|
-
motion === null || motion === void 0
|
|
150
|
+
motion === null || motion === void 0 || (_motion$onVisibleChan = motion.onVisibleChanged) === null || _motion$onVisibleChan === void 0 || _motion$onVisibleChan.call(motion, nextVisible);
|
|
151
151
|
_onVisibleChanged(nextVisible);
|
|
152
152
|
}
|
|
153
153
|
}), function (_ref, motionRef) {
|
package/es/hooks/useAlign.js
CHANGED
|
@@ -118,13 +118,14 @@ export default function useAlign(open, popupEle, target, placement, builtinPlace
|
|
|
118
118
|
var originTop = popupElement.style.top;
|
|
119
119
|
var originRight = popupElement.style.right;
|
|
120
120
|
var originBottom = popupElement.style.bottom;
|
|
121
|
+
var originOverflow = popupElement.style.overflow;
|
|
121
122
|
|
|
122
123
|
// Placement
|
|
123
124
|
var placementInfo = _objectSpread(_objectSpread({}, builtinPlacements[placement]), popupAlign);
|
|
124
125
|
|
|
125
126
|
// placeholder element
|
|
126
127
|
var placeholderElement = doc.createElement('div');
|
|
127
|
-
(_popupElement$parentE = popupElement.parentElement) === null || _popupElement$parentE === void 0
|
|
128
|
+
(_popupElement$parentE = popupElement.parentElement) === null || _popupElement$parentE === void 0 || _popupElement$parentE.appendChild(placeholderElement);
|
|
128
129
|
placeholderElement.style.left = "".concat(popupElement.offsetLeft, "px");
|
|
129
130
|
placeholderElement.style.top = "".concat(popupElement.offsetTop, "px");
|
|
130
131
|
placeholderElement.style.position = popupPosition;
|
|
@@ -136,6 +137,7 @@ export default function useAlign(open, popupEle, target, placement, builtinPlace
|
|
|
136
137
|
popupElement.style.top = '0';
|
|
137
138
|
popupElement.style.right = 'auto';
|
|
138
139
|
popupElement.style.bottom = 'auto';
|
|
140
|
+
popupElement.style.overflow = 'hidden';
|
|
139
141
|
|
|
140
142
|
// Calculate align style, we should consider `transform` case
|
|
141
143
|
var targetRect;
|
|
@@ -208,7 +210,8 @@ export default function useAlign(open, popupEle, target, placement, builtinPlace
|
|
|
208
210
|
popupElement.style.top = originTop;
|
|
209
211
|
popupElement.style.right = originRight;
|
|
210
212
|
popupElement.style.bottom = originBottom;
|
|
211
|
-
|
|
213
|
+
popupElement.style.overflow = originOverflow;
|
|
214
|
+
(_popupElement$parentE2 = popupElement.parentElement) === null || _popupElement$parentE2 === void 0 || _popupElement$parentE2.removeChild(placeholderElement);
|
|
212
215
|
|
|
213
216
|
// Calculate scale
|
|
214
217
|
var _scaleX = toNum(Math.round(popupWidth / parseFloat(width) * 1000) / 1000);
|
|
@@ -465,7 +468,7 @@ export default function useAlign(open, popupEle, target, placement, builtinPlace
|
|
|
465
468
|
var minBottom = Math.min(popupBottom, targetBottom);
|
|
466
469
|
var yCenter = (maxTop + minBottom) / 2;
|
|
467
470
|
var nextArrowY = yCenter - popupTop;
|
|
468
|
-
onPopupAlign === null || onPopupAlign === void 0
|
|
471
|
+
onPopupAlign === null || onPopupAlign === void 0 || onPopupAlign(popupEle, nextAlignInfo);
|
|
469
472
|
|
|
470
473
|
// Additional calculate right & bottom position
|
|
471
474
|
var offsetX4Right = popupMirrorRect.right - popupRect.x - (nextOffsetX + popupRect.width);
|
package/es/hooks/useWinClick.js
CHANGED
|
@@ -1,85 +1,44 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
-
import { warning } from 'rc-util';
|
|
3
1
|
import { getShadowRoot } from "rc-util/es/Dom/shadow";
|
|
4
|
-
import
|
|
2
|
+
import { warning } from "rc-util/es/warning";
|
|
5
3
|
import * as React from 'react';
|
|
6
4
|
import { getWin } from "../util";
|
|
7
5
|
export default function useWinClick(open, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen) {
|
|
8
6
|
var openRef = React.useRef(open);
|
|
9
|
-
|
|
10
|
-
// Window click to hide should be lock to avoid trigger lock immediately
|
|
11
|
-
var lockRef = React.useRef(false);
|
|
12
|
-
if (openRef.current !== open) {
|
|
13
|
-
lockRef.current = true;
|
|
14
|
-
openRef.current = open;
|
|
15
|
-
}
|
|
16
|
-
React.useEffect(function () {
|
|
17
|
-
var id = raf(function () {
|
|
18
|
-
lockRef.current = false;
|
|
19
|
-
});
|
|
20
|
-
return function () {
|
|
21
|
-
raf.cancel(id);
|
|
22
|
-
};
|
|
23
|
-
}, [open]);
|
|
7
|
+
openRef.current = open;
|
|
24
8
|
|
|
25
9
|
// Click to hide is special action since click popup element should not hide
|
|
26
10
|
React.useEffect(function () {
|
|
27
11
|
if (clickToHide && popupEle && (!mask || maskClosable)) {
|
|
28
|
-
var
|
|
29
|
-
var
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
var onWindowMouseDown = function onWindowMouseDown(_ref) {
|
|
34
|
-
var target = _ref.target;
|
|
35
|
-
clickInside = inPopupOrChild(target);
|
|
36
|
-
};
|
|
37
|
-
var onWindowClick = function onWindowClick(_ref2) {
|
|
38
|
-
var target = _ref2.target;
|
|
39
|
-
if (!lockRef.current && openRef.current && !clickInside && !inPopupOrChild(target)) {
|
|
40
|
-
triggerOpen(false);
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
return [onWindowMouseDown, onWindowClick];
|
|
12
|
+
var onTriggerClose = function onTriggerClose(_ref) {
|
|
13
|
+
var target = _ref.target;
|
|
14
|
+
if (openRef.current && !inPopupOrChild(target)) {
|
|
15
|
+
triggerOpen(false);
|
|
16
|
+
}
|
|
44
17
|
};
|
|
45
|
-
|
|
46
|
-
// Events
|
|
47
|
-
var _genClickEvents = genClickEvents(),
|
|
48
|
-
_genClickEvents2 = _slicedToArray(_genClickEvents, 2),
|
|
49
|
-
onWinMouseDown = _genClickEvents2[0],
|
|
50
|
-
onWinClick = _genClickEvents2[1];
|
|
51
|
-
var _genClickEvents3 = genClickEvents(),
|
|
52
|
-
_genClickEvents4 = _slicedToArray(_genClickEvents3, 2),
|
|
53
|
-
onShadowMouseDown = _genClickEvents4[0],
|
|
54
|
-
onShadowClick = _genClickEvents4[1];
|
|
55
18
|
var win = getWin(popupEle);
|
|
56
|
-
win.addEventListener('mousedown',
|
|
57
|
-
win.addEventListener('
|
|
58
|
-
win.addEventListener('contextmenu', onWinClick, true);
|
|
19
|
+
win.addEventListener('mousedown', onTriggerClose, true);
|
|
20
|
+
win.addEventListener('contextmenu', onTriggerClose, true);
|
|
59
21
|
|
|
60
22
|
// shadow root
|
|
61
23
|
var targetShadowRoot = getShadowRoot(targetEle);
|
|
62
24
|
if (targetShadowRoot) {
|
|
63
|
-
targetShadowRoot.addEventListener('mousedown',
|
|
64
|
-
targetShadowRoot.addEventListener('
|
|
65
|
-
targetShadowRoot.addEventListener('contextmenu', onShadowClick, true);
|
|
25
|
+
targetShadowRoot.addEventListener('mousedown', onTriggerClose, true);
|
|
26
|
+
targetShadowRoot.addEventListener('contextmenu', onTriggerClose, true);
|
|
66
27
|
}
|
|
67
28
|
|
|
68
29
|
// Warning if target and popup not in same root
|
|
69
30
|
if (process.env.NODE_ENV !== 'production') {
|
|
70
31
|
var _targetEle$getRootNod, _popupEle$getRootNode;
|
|
71
|
-
var targetRoot = targetEle === null || targetEle === void 0
|
|
32
|
+
var targetRoot = targetEle === null || targetEle === void 0 || (_targetEle$getRootNod = targetEle.getRootNode) === null || _targetEle$getRootNod === void 0 ? void 0 : _targetEle$getRootNod.call(targetEle);
|
|
72
33
|
var popupRoot = (_popupEle$getRootNode = popupEle.getRootNode) === null || _popupEle$getRootNode === void 0 ? void 0 : _popupEle$getRootNode.call(popupEle);
|
|
73
34
|
warning(targetRoot === popupRoot, "trigger element and popup element should in same shadow root.");
|
|
74
35
|
}
|
|
75
36
|
return function () {
|
|
76
|
-
win.removeEventListener('mousedown',
|
|
77
|
-
win.removeEventListener('
|
|
78
|
-
win.removeEventListener('contextmenu', onWinClick, true);
|
|
37
|
+
win.removeEventListener('mousedown', onTriggerClose, true);
|
|
38
|
+
win.removeEventListener('contextmenu', onTriggerClose, true);
|
|
79
39
|
if (targetShadowRoot) {
|
|
80
|
-
targetShadowRoot.removeEventListener('mousedown',
|
|
81
|
-
targetShadowRoot.removeEventListener('
|
|
82
|
-
targetShadowRoot.removeEventListener('contextmenu', onShadowClick, true);
|
|
40
|
+
targetShadowRoot.removeEventListener('mousedown', onTriggerClose, true);
|
|
41
|
+
targetShadowRoot.removeEventListener('contextmenu', onTriggerClose, true);
|
|
83
42
|
}
|
|
84
43
|
};
|
|
85
44
|
}
|
package/es/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { CSSMotionProps } from 'rc-motion';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import type { ActionType, AlignType, AnimationType, ArrowTypeOuter, BuildInPlacements, TransitionNameType } from './interface';
|
|
4
|
-
export type {
|
|
4
|
+
export type { ActionType, AlignType, ArrowTypeOuter as ArrowType, BuildInPlacements, };
|
|
5
5
|
export interface TriggerRef {
|
|
6
|
+
nativeElement: HTMLElement;
|
|
7
|
+
popupElement: HTMLElement;
|
|
6
8
|
forceAlign: VoidFunction;
|
|
7
9
|
}
|
|
8
10
|
export interface TriggerProps {
|
package/es/index.js
CHANGED
|
@@ -12,20 +12,21 @@ import useId from "rc-util/es/hooks/useId";
|
|
|
12
12
|
import useLayoutEffect from "rc-util/es/hooks/useLayoutEffect";
|
|
13
13
|
import isMobile from "rc-util/es/isMobile";
|
|
14
14
|
import * as React from 'react';
|
|
15
|
-
import
|
|
15
|
+
import Popup from "./Popup";
|
|
16
|
+
import TriggerWrapper from "./TriggerWrapper";
|
|
16
17
|
import TriggerContext from "./context";
|
|
17
18
|
import useAction from "./hooks/useAction";
|
|
18
19
|
import useAlign from "./hooks/useAlign";
|
|
19
20
|
import useWatch from "./hooks/useWatch";
|
|
20
21
|
import useWinClick from "./hooks/useWinClick";
|
|
21
|
-
import Popup from "./Popup";
|
|
22
|
-
import TriggerWrapper from "./TriggerWrapper";
|
|
23
22
|
import { getAlignPopupClassName, getMotion } from "./util";
|
|
24
23
|
|
|
25
24
|
// Removed Props List
|
|
26
25
|
// Seems this can be auto
|
|
27
26
|
// getDocument?: (element?: HTMLElement) => Document;
|
|
27
|
+
|
|
28
28
|
// New version will not wrap popup with `rc-trigger-popup-content` when multiple children
|
|
29
|
+
|
|
29
30
|
export function generateTrigger() {
|
|
30
31
|
var PortalComponent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Portal;
|
|
31
32
|
var Trigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
@@ -94,7 +95,7 @@ export function generateTrigger() {
|
|
|
94
95
|
return {
|
|
95
96
|
registerSubPopup: function registerSubPopup(id, subPopupEle) {
|
|
96
97
|
subPopupElements.current[id] = subPopupEle;
|
|
97
|
-
parentContext === null || parentContext === void 0
|
|
98
|
+
parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id, subPopupEle);
|
|
98
99
|
}
|
|
99
100
|
};
|
|
100
101
|
}, [parentContext]);
|
|
@@ -105,11 +106,15 @@ export function generateTrigger() {
|
|
|
105
106
|
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
106
107
|
popupEle = _React$useState4[0],
|
|
107
108
|
setPopupEle = _React$useState4[1];
|
|
109
|
+
|
|
110
|
+
// Used for forwardRef popup. Not use internal
|
|
111
|
+
var externalPopupRef = React.useRef(null);
|
|
108
112
|
var setPopupRef = useEvent(function (node) {
|
|
113
|
+
externalPopupRef.current = node;
|
|
109
114
|
if (isDOM(node) && popupEle !== node) {
|
|
110
115
|
setPopupEle(node);
|
|
111
116
|
}
|
|
112
|
-
parentContext === null || parentContext === void 0
|
|
117
|
+
parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id, node);
|
|
113
118
|
});
|
|
114
119
|
|
|
115
120
|
// =========================== Target ===========================
|
|
@@ -118,9 +123,13 @@ export function generateTrigger() {
|
|
|
118
123
|
_React$useState6 = _slicedToArray(_React$useState5, 2),
|
|
119
124
|
targetEle = _React$useState6[0],
|
|
120
125
|
setTargetEle = _React$useState6[1];
|
|
126
|
+
|
|
127
|
+
// Used for forwardRef target. Not use internal
|
|
128
|
+
var externalForwardRef = React.useRef(null);
|
|
121
129
|
var setTargetRef = useEvent(function (node) {
|
|
122
130
|
if (isDOM(node) && targetEle !== node) {
|
|
123
131
|
setTargetEle(node);
|
|
132
|
+
externalForwardRef.current = node;
|
|
124
133
|
}
|
|
125
134
|
});
|
|
126
135
|
|
|
@@ -160,15 +169,19 @@ export function generateTrigger() {
|
|
|
160
169
|
}, [popupVisible]);
|
|
161
170
|
var openRef = React.useRef(mergedOpen);
|
|
162
171
|
openRef.current = mergedOpen;
|
|
172
|
+
var lastTriggerRef = React.useRef([]);
|
|
173
|
+
lastTriggerRef.current = [];
|
|
163
174
|
var internalTriggerOpen = useEvent(function (nextOpen) {
|
|
175
|
+
var _lastTriggerRef$curre;
|
|
176
|
+
setMergedOpen(nextOpen);
|
|
177
|
+
|
|
164
178
|
// Enter or Pointer will both trigger open state change
|
|
165
179
|
// We only need take one to avoid duplicated change event trigger
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
});
|
|
180
|
+
// Use `lastTriggerRef` to record last open type
|
|
181
|
+
if (((_lastTriggerRef$curre = lastTriggerRef.current[lastTriggerRef.current.length - 1]) !== null && _lastTriggerRef$curre !== void 0 ? _lastTriggerRef$curre : mergedOpen) !== nextOpen) {
|
|
182
|
+
lastTriggerRef.current.push(nextOpen);
|
|
183
|
+
onPopupVisibleChange === null || onPopupVisibleChange === void 0 || onPopupVisibleChange(nextOpen);
|
|
184
|
+
}
|
|
172
185
|
});
|
|
173
186
|
|
|
174
187
|
// Trigger for delay
|
|
@@ -258,8 +271,12 @@ export function generateTrigger() {
|
|
|
258
271
|
var baseClassName = getAlignPopupClassName(builtinPlacements, prefixCls, alignInfo, alignPoint);
|
|
259
272
|
return classNames(baseClassName, getPopupClassNameFromAlign === null || getPopupClassNameFromAlign === void 0 ? void 0 : getPopupClassNameFromAlign(alignInfo));
|
|
260
273
|
}, [alignInfo, getPopupClassNameFromAlign, builtinPlacements, prefixCls, alignPoint]);
|
|
274
|
+
|
|
275
|
+
// ============================ Refs ============================
|
|
261
276
|
React.useImperativeHandle(ref, function () {
|
|
262
277
|
return {
|
|
278
|
+
nativeElement: externalForwardRef.current,
|
|
279
|
+
popupElement: externalPopupRef.current,
|
|
263
280
|
forceAlign: triggerAlign
|
|
264
281
|
};
|
|
265
282
|
});
|
|
@@ -289,7 +306,7 @@ export function generateTrigger() {
|
|
|
289
306
|
var onVisibleChanged = function onVisibleChanged(visible) {
|
|
290
307
|
setInMotion(false);
|
|
291
308
|
onAlign();
|
|
292
|
-
afterPopupVisibleChange === null || afterPopupVisibleChange === void 0
|
|
309
|
+
afterPopupVisibleChange === null || afterPopupVisibleChange === void 0 || afterPopupVisibleChange(visible);
|
|
293
310
|
};
|
|
294
311
|
|
|
295
312
|
// We will trigger align when motion is in prepare
|
|
@@ -316,14 +333,14 @@ export function generateTrigger() {
|
|
|
316
333
|
function wrapperAction(eventName, nextOpen, delay, preEvent) {
|
|
317
334
|
cloneProps[eventName] = function (event) {
|
|
318
335
|
var _originChildProps$eve;
|
|
319
|
-
preEvent === null || preEvent === void 0
|
|
336
|
+
preEvent === null || preEvent === void 0 || preEvent(event);
|
|
320
337
|
triggerOpen(nextOpen, delay);
|
|
321
338
|
|
|
322
339
|
// Pass to origin
|
|
323
340
|
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
324
341
|
args[_key - 1] = arguments[_key];
|
|
325
342
|
}
|
|
326
|
-
(_originChildProps$eve = originChildProps[eventName]) === null || _originChildProps$eve === void 0
|
|
343
|
+
(_originChildProps$eve = originChildProps[eventName]) === null || _originChildProps$eve === void 0 || _originChildProps$eve.call.apply(_originChildProps$eve, [originChildProps, event].concat(args));
|
|
327
344
|
};
|
|
328
345
|
}
|
|
329
346
|
|
|
@@ -342,7 +359,7 @@ export function generateTrigger() {
|
|
|
342
359
|
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
343
360
|
args[_key2 - 1] = arguments[_key2];
|
|
344
361
|
}
|
|
345
|
-
(_originChildProps$onC = originChildProps.onClick) === null || _originChildProps$onC === void 0
|
|
362
|
+
(_originChildProps$onC = originChildProps.onClick) === null || _originChildProps$onC === void 0 || _originChildProps$onC.call.apply(_originChildProps$onC, [originChildProps, event].concat(args));
|
|
346
363
|
};
|
|
347
364
|
}
|
|
348
365
|
|
|
@@ -362,9 +379,9 @@ export function generateTrigger() {
|
|
|
362
379
|
wrapperAction('onPointerEnter', true, mouseEnterDelay, function (event) {
|
|
363
380
|
setMousePosByEvent(event);
|
|
364
381
|
});
|
|
365
|
-
onPopupMouseEnter = function onPopupMouseEnter() {
|
|
382
|
+
onPopupMouseEnter = function onPopupMouseEnter(event) {
|
|
366
383
|
// Only trigger re-open when popup is visible
|
|
367
|
-
if (mergedOpen || inMotion) {
|
|
384
|
+
if ((mergedOpen || inMotion) && popupEle !== null && popupEle !== void 0 && popupEle.contains(event.target)) {
|
|
368
385
|
triggerOpen(true, mouseEnterDelay);
|
|
369
386
|
}
|
|
370
387
|
};
|
|
@@ -374,7 +391,7 @@ export function generateTrigger() {
|
|
|
374
391
|
cloneProps.onMouseMove = function (event) {
|
|
375
392
|
var _originChildProps$onM;
|
|
376
393
|
// setMousePosByEvent(event);
|
|
377
|
-
(_originChildProps$onM = originChildProps.onMouseMove) === null || _originChildProps$onM === void 0
|
|
394
|
+
(_originChildProps$onM = originChildProps.onMouseMove) === null || _originChildProps$onM === void 0 || _originChildProps$onM.call(originChildProps, event);
|
|
378
395
|
};
|
|
379
396
|
}
|
|
380
397
|
}
|
|
@@ -410,7 +427,7 @@ export function generateTrigger() {
|
|
|
410
427
|
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
|
|
411
428
|
args[_key3 - 1] = arguments[_key3];
|
|
412
429
|
}
|
|
413
|
-
(_originChildProps$onC2 = originChildProps.onContextMenu) === null || _originChildProps$onC2 === void 0
|
|
430
|
+
(_originChildProps$onC2 = originChildProps.onContextMenu) === null || _originChildProps$onC2 === void 0 || _originChildProps$onC2.call.apply(_originChildProps$onC2, [originChildProps, event].concat(args));
|
|
414
431
|
};
|
|
415
432
|
}
|
|
416
433
|
|
|
@@ -432,7 +449,7 @@ export function generateTrigger() {
|
|
|
432
449
|
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
|
433
450
|
args[_key4] = arguments[_key4];
|
|
434
451
|
}
|
|
435
|
-
(_mergedChildrenProps$ = mergedChildrenProps[eventName]) === null || _mergedChildrenProps$ === void 0
|
|
452
|
+
(_mergedChildrenProps$ = mergedChildrenProps[eventName]) === null || _mergedChildrenProps$ === void 0 || _mergedChildrenProps$.call.apply(_mergedChildrenProps$, [mergedChildrenProps].concat(args));
|
|
436
453
|
restProps[eventName].apply(restProps, args);
|
|
437
454
|
};
|
|
438
455
|
}
|
package/es/mock.js
CHANGED
|
@@ -11,12 +11,12 @@ var MockPortal = function MockPortal(_ref) {
|
|
|
11
11
|
visible = _React$useState2[0],
|
|
12
12
|
setVisible = _React$useState2[1];
|
|
13
13
|
React.useEffect(function () {
|
|
14
|
-
getContainer === null || getContainer === void 0
|
|
14
|
+
getContainer === null || getContainer === void 0 || getContainer();
|
|
15
15
|
});
|
|
16
16
|
React.useEffect(function () {
|
|
17
17
|
if (open) {
|
|
18
18
|
setVisible(true);
|
|
19
|
-
} else if (
|
|
19
|
+
} else if (autoDestroy) {
|
|
20
20
|
setVisible(false);
|
|
21
21
|
}
|
|
22
22
|
}, [open, autoDestroy]);
|
|
@@ -15,5 +15,4 @@ var PopupContent = /*#__PURE__*/React.memo(function (_ref) {
|
|
|
15
15
|
if (process.env.NODE_ENV !== 'production') {
|
|
16
16
|
PopupContent.displayName = 'PopupContent';
|
|
17
17
|
}
|
|
18
|
-
var _default = PopupContent;
|
|
19
|
-
exports.default = _default;
|
|
18
|
+
var _default = exports.default = PopupContent;
|
package/lib/Popup/index.js
CHANGED
|
@@ -155,7 +155,7 @@ var Popup = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
155
155
|
visible: open,
|
|
156
156
|
onVisibleChanged: function onVisibleChanged(nextVisible) {
|
|
157
157
|
var _motion$onVisibleChan;
|
|
158
|
-
motion === null || motion === void 0
|
|
158
|
+
motion === null || motion === void 0 || (_motion$onVisibleChan = motion.onVisibleChanged) === null || _motion$onVisibleChan === void 0 || _motion$onVisibleChan.call(motion, nextVisible);
|
|
159
159
|
_onVisibleChanged(nextVisible);
|
|
160
160
|
}
|
|
161
161
|
}), function (_ref, motionRef) {
|
|
@@ -190,5 +190,4 @@ var Popup = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
190
190
|
if (process.env.NODE_ENV !== 'production') {
|
|
191
191
|
Popup.displayName = 'Popup';
|
|
192
192
|
}
|
|
193
|
-
var _default = Popup;
|
|
194
|
-
exports.default = _default;
|
|
193
|
+
var _default = exports.default = Popup;
|
package/lib/TriggerWrapper.js
CHANGED
|
@@ -24,5 +24,4 @@ var TriggerWrapper = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
24
24
|
if (process.env.NODE_ENV !== 'production') {
|
|
25
25
|
TriggerWrapper.displayName = 'TriggerWrapper';
|
|
26
26
|
}
|
|
27
|
-
var _default = TriggerWrapper;
|
|
28
|
-
exports.default = _default;
|
|
27
|
+
var _default = exports.default = TriggerWrapper;
|
package/lib/context.js
CHANGED
|
@@ -7,5 +7,4 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var React = _interopRequireWildcard(require("react"));
|
|
9
9
|
var TriggerContext = /*#__PURE__*/React.createContext(null);
|
|
10
|
-
var _default = TriggerContext;
|
|
11
|
-
exports.default = _default;
|
|
10
|
+
var _default = exports.default = TriggerContext;
|
package/lib/hooks/useAlign.js
CHANGED
|
@@ -126,13 +126,14 @@ function useAlign(open, popupEle, target, placement, builtinPlacements, popupAli
|
|
|
126
126
|
var originTop = popupElement.style.top;
|
|
127
127
|
var originRight = popupElement.style.right;
|
|
128
128
|
var originBottom = popupElement.style.bottom;
|
|
129
|
+
var originOverflow = popupElement.style.overflow;
|
|
129
130
|
|
|
130
131
|
// Placement
|
|
131
132
|
var placementInfo = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, builtinPlacements[placement]), popupAlign);
|
|
132
133
|
|
|
133
134
|
// placeholder element
|
|
134
135
|
var placeholderElement = doc.createElement('div');
|
|
135
|
-
(_popupElement$parentE = popupElement.parentElement) === null || _popupElement$parentE === void 0
|
|
136
|
+
(_popupElement$parentE = popupElement.parentElement) === null || _popupElement$parentE === void 0 || _popupElement$parentE.appendChild(placeholderElement);
|
|
136
137
|
placeholderElement.style.left = "".concat(popupElement.offsetLeft, "px");
|
|
137
138
|
placeholderElement.style.top = "".concat(popupElement.offsetTop, "px");
|
|
138
139
|
placeholderElement.style.position = popupPosition;
|
|
@@ -144,6 +145,7 @@ function useAlign(open, popupEle, target, placement, builtinPlacements, popupAli
|
|
|
144
145
|
popupElement.style.top = '0';
|
|
145
146
|
popupElement.style.right = 'auto';
|
|
146
147
|
popupElement.style.bottom = 'auto';
|
|
148
|
+
popupElement.style.overflow = 'hidden';
|
|
147
149
|
|
|
148
150
|
// Calculate align style, we should consider `transform` case
|
|
149
151
|
var targetRect;
|
|
@@ -216,7 +218,8 @@ function useAlign(open, popupEle, target, placement, builtinPlacements, popupAli
|
|
|
216
218
|
popupElement.style.top = originTop;
|
|
217
219
|
popupElement.style.right = originRight;
|
|
218
220
|
popupElement.style.bottom = originBottom;
|
|
219
|
-
|
|
221
|
+
popupElement.style.overflow = originOverflow;
|
|
222
|
+
(_popupElement$parentE2 = popupElement.parentElement) === null || _popupElement$parentE2 === void 0 || _popupElement$parentE2.removeChild(placeholderElement);
|
|
220
223
|
|
|
221
224
|
// Calculate scale
|
|
222
225
|
var _scaleX = (0, _util.toNum)(Math.round(popupWidth / parseFloat(width) * 1000) / 1000);
|
|
@@ -473,7 +476,7 @@ function useAlign(open, popupEle, target, placement, builtinPlacements, popupAli
|
|
|
473
476
|
var minBottom = Math.min(popupBottom, targetBottom);
|
|
474
477
|
var yCenter = (maxTop + minBottom) / 2;
|
|
475
478
|
var nextArrowY = yCenter - popupTop;
|
|
476
|
-
onPopupAlign === null || onPopupAlign === void 0
|
|
479
|
+
onPopupAlign === null || onPopupAlign === void 0 || onPopupAlign(popupEle, nextAlignInfo);
|
|
477
480
|
|
|
478
481
|
// Additional calculate right & bottom position
|
|
479
482
|
var offsetX4Right = popupMirrorRect.right - popupRect.x - (nextOffsetX + popupRect.width);
|
package/lib/hooks/useWinClick.js
CHANGED
|
@@ -1,93 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = useWinClick;
|
|
9
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
-
var _rcUtil = require("rc-util");
|
|
11
8
|
var _shadow = require("rc-util/lib/Dom/shadow");
|
|
12
|
-
var
|
|
9
|
+
var _warning = require("rc-util/lib/warning");
|
|
13
10
|
var React = _interopRequireWildcard(require("react"));
|
|
14
11
|
var _util = require("../util");
|
|
15
12
|
function useWinClick(open, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen) {
|
|
16
13
|
var openRef = React.useRef(open);
|
|
17
|
-
|
|
18
|
-
// Window click to hide should be lock to avoid trigger lock immediately
|
|
19
|
-
var lockRef = React.useRef(false);
|
|
20
|
-
if (openRef.current !== open) {
|
|
21
|
-
lockRef.current = true;
|
|
22
|
-
openRef.current = open;
|
|
23
|
-
}
|
|
24
|
-
React.useEffect(function () {
|
|
25
|
-
var id = (0, _raf.default)(function () {
|
|
26
|
-
lockRef.current = false;
|
|
27
|
-
});
|
|
28
|
-
return function () {
|
|
29
|
-
_raf.default.cancel(id);
|
|
30
|
-
};
|
|
31
|
-
}, [open]);
|
|
14
|
+
openRef.current = open;
|
|
32
15
|
|
|
33
16
|
// Click to hide is special action since click popup element should not hide
|
|
34
17
|
React.useEffect(function () {
|
|
35
18
|
if (clickToHide && popupEle && (!mask || maskClosable)) {
|
|
36
|
-
var
|
|
37
|
-
var
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
var onWindowMouseDown = function onWindowMouseDown(_ref) {
|
|
42
|
-
var target = _ref.target;
|
|
43
|
-
clickInside = inPopupOrChild(target);
|
|
44
|
-
};
|
|
45
|
-
var onWindowClick = function onWindowClick(_ref2) {
|
|
46
|
-
var target = _ref2.target;
|
|
47
|
-
if (!lockRef.current && openRef.current && !clickInside && !inPopupOrChild(target)) {
|
|
48
|
-
triggerOpen(false);
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
return [onWindowMouseDown, onWindowClick];
|
|
19
|
+
var onTriggerClose = function onTriggerClose(_ref) {
|
|
20
|
+
var target = _ref.target;
|
|
21
|
+
if (openRef.current && !inPopupOrChild(target)) {
|
|
22
|
+
triggerOpen(false);
|
|
23
|
+
}
|
|
52
24
|
};
|
|
53
|
-
|
|
54
|
-
// Events
|
|
55
|
-
var _genClickEvents = genClickEvents(),
|
|
56
|
-
_genClickEvents2 = (0, _slicedToArray2.default)(_genClickEvents, 2),
|
|
57
|
-
onWinMouseDown = _genClickEvents2[0],
|
|
58
|
-
onWinClick = _genClickEvents2[1];
|
|
59
|
-
var _genClickEvents3 = genClickEvents(),
|
|
60
|
-
_genClickEvents4 = (0, _slicedToArray2.default)(_genClickEvents3, 2),
|
|
61
|
-
onShadowMouseDown = _genClickEvents4[0],
|
|
62
|
-
onShadowClick = _genClickEvents4[1];
|
|
63
25
|
var win = (0, _util.getWin)(popupEle);
|
|
64
|
-
win.addEventListener('mousedown',
|
|
65
|
-
win.addEventListener('
|
|
66
|
-
win.addEventListener('contextmenu', onWinClick, true);
|
|
26
|
+
win.addEventListener('mousedown', onTriggerClose, true);
|
|
27
|
+
win.addEventListener('contextmenu', onTriggerClose, true);
|
|
67
28
|
|
|
68
29
|
// shadow root
|
|
69
30
|
var targetShadowRoot = (0, _shadow.getShadowRoot)(targetEle);
|
|
70
31
|
if (targetShadowRoot) {
|
|
71
|
-
targetShadowRoot.addEventListener('mousedown',
|
|
72
|
-
targetShadowRoot.addEventListener('
|
|
73
|
-
targetShadowRoot.addEventListener('contextmenu', onShadowClick, true);
|
|
32
|
+
targetShadowRoot.addEventListener('mousedown', onTriggerClose, true);
|
|
33
|
+
targetShadowRoot.addEventListener('contextmenu', onTriggerClose, true);
|
|
74
34
|
}
|
|
75
35
|
|
|
76
36
|
// Warning if target and popup not in same root
|
|
77
37
|
if (process.env.NODE_ENV !== 'production') {
|
|
78
38
|
var _targetEle$getRootNod, _popupEle$getRootNode;
|
|
79
|
-
var targetRoot = targetEle === null || targetEle === void 0
|
|
39
|
+
var targetRoot = targetEle === null || targetEle === void 0 || (_targetEle$getRootNod = targetEle.getRootNode) === null || _targetEle$getRootNod === void 0 ? void 0 : _targetEle$getRootNod.call(targetEle);
|
|
80
40
|
var popupRoot = (_popupEle$getRootNode = popupEle.getRootNode) === null || _popupEle$getRootNode === void 0 ? void 0 : _popupEle$getRootNode.call(popupEle);
|
|
81
|
-
(0,
|
|
41
|
+
(0, _warning.warning)(targetRoot === popupRoot, "trigger element and popup element should in same shadow root.");
|
|
82
42
|
}
|
|
83
43
|
return function () {
|
|
84
|
-
win.removeEventListener('mousedown',
|
|
85
|
-
win.removeEventListener('
|
|
86
|
-
win.removeEventListener('contextmenu', onWinClick, true);
|
|
44
|
+
win.removeEventListener('mousedown', onTriggerClose, true);
|
|
45
|
+
win.removeEventListener('contextmenu', onTriggerClose, true);
|
|
87
46
|
if (targetShadowRoot) {
|
|
88
|
-
targetShadowRoot.removeEventListener('mousedown',
|
|
89
|
-
targetShadowRoot.removeEventListener('
|
|
90
|
-
targetShadowRoot.removeEventListener('contextmenu', onShadowClick, true);
|
|
47
|
+
targetShadowRoot.removeEventListener('mousedown', onTriggerClose, true);
|
|
48
|
+
targetShadowRoot.removeEventListener('contextmenu', onTriggerClose, true);
|
|
91
49
|
}
|
|
92
50
|
};
|
|
93
51
|
}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { CSSMotionProps } from 'rc-motion';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import type { ActionType, AlignType, AnimationType, ArrowTypeOuter, BuildInPlacements, TransitionNameType } from './interface';
|
|
4
|
-
export type {
|
|
4
|
+
export type { ActionType, AlignType, ArrowTypeOuter as ArrowType, BuildInPlacements, };
|
|
5
5
|
export interface TriggerRef {
|
|
6
|
+
nativeElement: HTMLElement;
|
|
7
|
+
popupElement: HTMLElement;
|
|
6
8
|
forceAlign: VoidFunction;
|
|
7
9
|
}
|
|
8
10
|
export interface TriggerProps {
|
package/lib/index.js
CHANGED
|
@@ -20,14 +20,13 @@ var _useId = _interopRequireDefault(require("rc-util/lib/hooks/useId"));
|
|
|
20
20
|
var _useLayoutEffect = _interopRequireDefault(require("rc-util/lib/hooks/useLayoutEffect"));
|
|
21
21
|
var _isMobile = _interopRequireDefault(require("rc-util/lib/isMobile"));
|
|
22
22
|
var React = _interopRequireWildcard(require("react"));
|
|
23
|
-
var
|
|
23
|
+
var _Popup = _interopRequireDefault(require("./Popup"));
|
|
24
|
+
var _TriggerWrapper = _interopRequireDefault(require("./TriggerWrapper"));
|
|
24
25
|
var _context = _interopRequireDefault(require("./context"));
|
|
25
26
|
var _useAction3 = _interopRequireDefault(require("./hooks/useAction"));
|
|
26
27
|
var _useAlign3 = _interopRequireDefault(require("./hooks/useAlign"));
|
|
27
28
|
var _useWatch = _interopRequireDefault(require("./hooks/useWatch"));
|
|
28
29
|
var _useWinClick = _interopRequireDefault(require("./hooks/useWinClick"));
|
|
29
|
-
var _Popup = _interopRequireDefault(require("./Popup"));
|
|
30
|
-
var _TriggerWrapper = _interopRequireDefault(require("./TriggerWrapper"));
|
|
31
30
|
var _util = require("./util");
|
|
32
31
|
var _excluded = ["prefixCls", "children", "action", "showAction", "hideAction", "popupVisible", "defaultPopupVisible", "onPopupVisibleChange", "afterPopupVisibleChange", "mouseEnterDelay", "mouseLeaveDelay", "focusDelay", "blurDelay", "mask", "maskClosable", "getPopupContainer", "forceRender", "autoDestroy", "destroyPopupOnHide", "popup", "popupClassName", "popupStyle", "popupPlacement", "builtinPlacements", "popupAlign", "zIndex", "stretch", "getPopupClassNameFromAlign", "fresh", "alignPoint", "onPopupClick", "onPopupAlign", "arrow", "popupMotion", "maskMotion", "popupTransitionName", "popupAnimation", "maskTransitionName", "maskAnimation", "className", "getTriggerDOMNode"];
|
|
33
32
|
// Removed Props List
|
|
@@ -104,7 +103,7 @@ function generateTrigger() {
|
|
|
104
103
|
return {
|
|
105
104
|
registerSubPopup: function registerSubPopup(id, subPopupEle) {
|
|
106
105
|
subPopupElements.current[id] = subPopupEle;
|
|
107
|
-
parentContext === null || parentContext === void 0
|
|
106
|
+
parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id, subPopupEle);
|
|
108
107
|
}
|
|
109
108
|
};
|
|
110
109
|
}, [parentContext]);
|
|
@@ -115,11 +114,15 @@ function generateTrigger() {
|
|
|
115
114
|
_React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
|
|
116
115
|
popupEle = _React$useState4[0],
|
|
117
116
|
setPopupEle = _React$useState4[1];
|
|
117
|
+
|
|
118
|
+
// Used for forwardRef popup. Not use internal
|
|
119
|
+
var externalPopupRef = React.useRef(null);
|
|
118
120
|
var setPopupRef = (0, _useEvent.default)(function (node) {
|
|
121
|
+
externalPopupRef.current = node;
|
|
119
122
|
if ((0, _findDOMNode.isDOM)(node) && popupEle !== node) {
|
|
120
123
|
setPopupEle(node);
|
|
121
124
|
}
|
|
122
|
-
parentContext === null || parentContext === void 0
|
|
125
|
+
parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id, node);
|
|
123
126
|
});
|
|
124
127
|
|
|
125
128
|
// =========================== Target ===========================
|
|
@@ -128,9 +131,13 @@ function generateTrigger() {
|
|
|
128
131
|
_React$useState6 = (0, _slicedToArray2.default)(_React$useState5, 2),
|
|
129
132
|
targetEle = _React$useState6[0],
|
|
130
133
|
setTargetEle = _React$useState6[1];
|
|
134
|
+
|
|
135
|
+
// Used for forwardRef target. Not use internal
|
|
136
|
+
var externalForwardRef = React.useRef(null);
|
|
131
137
|
var setTargetRef = (0, _useEvent.default)(function (node) {
|
|
132
138
|
if ((0, _findDOMNode.isDOM)(node) && targetEle !== node) {
|
|
133
139
|
setTargetEle(node);
|
|
140
|
+
externalForwardRef.current = node;
|
|
134
141
|
}
|
|
135
142
|
});
|
|
136
143
|
|
|
@@ -170,15 +177,19 @@ function generateTrigger() {
|
|
|
170
177
|
}, [popupVisible]);
|
|
171
178
|
var openRef = React.useRef(mergedOpen);
|
|
172
179
|
openRef.current = mergedOpen;
|
|
180
|
+
var lastTriggerRef = React.useRef([]);
|
|
181
|
+
lastTriggerRef.current = [];
|
|
173
182
|
var internalTriggerOpen = (0, _useEvent.default)(function (nextOpen) {
|
|
183
|
+
var _lastTriggerRef$curre;
|
|
184
|
+
setMergedOpen(nextOpen);
|
|
185
|
+
|
|
174
186
|
// Enter or Pointer will both trigger open state change
|
|
175
187
|
// We only need take one to avoid duplicated change event trigger
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
});
|
|
188
|
+
// Use `lastTriggerRef` to record last open type
|
|
189
|
+
if (((_lastTriggerRef$curre = lastTriggerRef.current[lastTriggerRef.current.length - 1]) !== null && _lastTriggerRef$curre !== void 0 ? _lastTriggerRef$curre : mergedOpen) !== nextOpen) {
|
|
190
|
+
lastTriggerRef.current.push(nextOpen);
|
|
191
|
+
onPopupVisibleChange === null || onPopupVisibleChange === void 0 || onPopupVisibleChange(nextOpen);
|
|
192
|
+
}
|
|
182
193
|
});
|
|
183
194
|
|
|
184
195
|
// Trigger for delay
|
|
@@ -268,8 +279,12 @@ function generateTrigger() {
|
|
|
268
279
|
var baseClassName = (0, _util.getAlignPopupClassName)(builtinPlacements, prefixCls, alignInfo, alignPoint);
|
|
269
280
|
return (0, _classnames.default)(baseClassName, getPopupClassNameFromAlign === null || getPopupClassNameFromAlign === void 0 ? void 0 : getPopupClassNameFromAlign(alignInfo));
|
|
270
281
|
}, [alignInfo, getPopupClassNameFromAlign, builtinPlacements, prefixCls, alignPoint]);
|
|
282
|
+
|
|
283
|
+
// ============================ Refs ============================
|
|
271
284
|
React.useImperativeHandle(ref, function () {
|
|
272
285
|
return {
|
|
286
|
+
nativeElement: externalForwardRef.current,
|
|
287
|
+
popupElement: externalPopupRef.current,
|
|
273
288
|
forceAlign: triggerAlign
|
|
274
289
|
};
|
|
275
290
|
});
|
|
@@ -299,7 +314,7 @@ function generateTrigger() {
|
|
|
299
314
|
var onVisibleChanged = function onVisibleChanged(visible) {
|
|
300
315
|
setInMotion(false);
|
|
301
316
|
onAlign();
|
|
302
|
-
afterPopupVisibleChange === null || afterPopupVisibleChange === void 0
|
|
317
|
+
afterPopupVisibleChange === null || afterPopupVisibleChange === void 0 || afterPopupVisibleChange(visible);
|
|
303
318
|
};
|
|
304
319
|
|
|
305
320
|
// We will trigger align when motion is in prepare
|
|
@@ -326,14 +341,14 @@ function generateTrigger() {
|
|
|
326
341
|
function wrapperAction(eventName, nextOpen, delay, preEvent) {
|
|
327
342
|
cloneProps[eventName] = function (event) {
|
|
328
343
|
var _originChildProps$eve;
|
|
329
|
-
preEvent === null || preEvent === void 0
|
|
344
|
+
preEvent === null || preEvent === void 0 || preEvent(event);
|
|
330
345
|
triggerOpen(nextOpen, delay);
|
|
331
346
|
|
|
332
347
|
// Pass to origin
|
|
333
348
|
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
334
349
|
args[_key - 1] = arguments[_key];
|
|
335
350
|
}
|
|
336
|
-
(_originChildProps$eve = originChildProps[eventName]) === null || _originChildProps$eve === void 0
|
|
351
|
+
(_originChildProps$eve = originChildProps[eventName]) === null || _originChildProps$eve === void 0 || _originChildProps$eve.call.apply(_originChildProps$eve, [originChildProps, event].concat(args));
|
|
337
352
|
};
|
|
338
353
|
}
|
|
339
354
|
|
|
@@ -352,7 +367,7 @@ function generateTrigger() {
|
|
|
352
367
|
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
353
368
|
args[_key2 - 1] = arguments[_key2];
|
|
354
369
|
}
|
|
355
|
-
(_originChildProps$onC = originChildProps.onClick) === null || _originChildProps$onC === void 0
|
|
370
|
+
(_originChildProps$onC = originChildProps.onClick) === null || _originChildProps$onC === void 0 || _originChildProps$onC.call.apply(_originChildProps$onC, [originChildProps, event].concat(args));
|
|
356
371
|
};
|
|
357
372
|
}
|
|
358
373
|
|
|
@@ -372,9 +387,9 @@ function generateTrigger() {
|
|
|
372
387
|
wrapperAction('onPointerEnter', true, mouseEnterDelay, function (event) {
|
|
373
388
|
setMousePosByEvent(event);
|
|
374
389
|
});
|
|
375
|
-
onPopupMouseEnter = function onPopupMouseEnter() {
|
|
390
|
+
onPopupMouseEnter = function onPopupMouseEnter(event) {
|
|
376
391
|
// Only trigger re-open when popup is visible
|
|
377
|
-
if (mergedOpen || inMotion) {
|
|
392
|
+
if ((mergedOpen || inMotion) && popupEle !== null && popupEle !== void 0 && popupEle.contains(event.target)) {
|
|
378
393
|
triggerOpen(true, mouseEnterDelay);
|
|
379
394
|
}
|
|
380
395
|
};
|
|
@@ -384,7 +399,7 @@ function generateTrigger() {
|
|
|
384
399
|
cloneProps.onMouseMove = function (event) {
|
|
385
400
|
var _originChildProps$onM;
|
|
386
401
|
// setMousePosByEvent(event);
|
|
387
|
-
(_originChildProps$onM = originChildProps.onMouseMove) === null || _originChildProps$onM === void 0
|
|
402
|
+
(_originChildProps$onM = originChildProps.onMouseMove) === null || _originChildProps$onM === void 0 || _originChildProps$onM.call(originChildProps, event);
|
|
388
403
|
};
|
|
389
404
|
}
|
|
390
405
|
}
|
|
@@ -420,7 +435,7 @@ function generateTrigger() {
|
|
|
420
435
|
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
|
|
421
436
|
args[_key3 - 1] = arguments[_key3];
|
|
422
437
|
}
|
|
423
|
-
(_originChildProps$onC2 = originChildProps.onContextMenu) === null || _originChildProps$onC2 === void 0
|
|
438
|
+
(_originChildProps$onC2 = originChildProps.onContextMenu) === null || _originChildProps$onC2 === void 0 || _originChildProps$onC2.call.apply(_originChildProps$onC2, [originChildProps, event].concat(args));
|
|
424
439
|
};
|
|
425
440
|
}
|
|
426
441
|
|
|
@@ -442,7 +457,7 @@ function generateTrigger() {
|
|
|
442
457
|
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
|
443
458
|
args[_key4] = arguments[_key4];
|
|
444
459
|
}
|
|
445
|
-
(_mergedChildrenProps$ = mergedChildrenProps[eventName]) === null || _mergedChildrenProps$ === void 0
|
|
460
|
+
(_mergedChildrenProps$ = mergedChildrenProps[eventName]) === null || _mergedChildrenProps$ === void 0 || _mergedChildrenProps$.call.apply(_mergedChildrenProps$, [mergedChildrenProps].concat(args));
|
|
446
461
|
restProps[eventName].apply(restProps, args);
|
|
447
462
|
};
|
|
448
463
|
}
|
|
@@ -526,5 +541,4 @@ function generateTrigger() {
|
|
|
526
541
|
}
|
|
527
542
|
return Trigger;
|
|
528
543
|
}
|
|
529
|
-
var _default = generateTrigger(_portal.default);
|
|
530
|
-
exports.default = _default;
|
|
544
|
+
var _default = exports.default = generateTrigger(_portal.default);
|
package/lib/mock.js
CHANGED
|
@@ -19,16 +19,15 @@ var MockPortal = function MockPortal(_ref) {
|
|
|
19
19
|
visible = _React$useState2[0],
|
|
20
20
|
setVisible = _React$useState2[1];
|
|
21
21
|
React.useEffect(function () {
|
|
22
|
-
getContainer === null || getContainer === void 0
|
|
22
|
+
getContainer === null || getContainer === void 0 || getContainer();
|
|
23
23
|
});
|
|
24
24
|
React.useEffect(function () {
|
|
25
25
|
if (open) {
|
|
26
26
|
setVisible(true);
|
|
27
|
-
} else if (
|
|
27
|
+
} else if (autoDestroy) {
|
|
28
28
|
setVisible(false);
|
|
29
29
|
}
|
|
30
30
|
}, [open, autoDestroy]);
|
|
31
31
|
return visible ? children : null;
|
|
32
32
|
};
|
|
33
|
-
var _default = (0, _index.generateTrigger)(MockPortal);
|
|
34
|
-
exports.default = _default;
|
|
33
|
+
var _default = exports.default = (0, _index.generateTrigger)(MockPortal);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rc-component/trigger",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "base abstract trigger component for react",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=8.x"
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"start": "dumi dev",
|
|
34
34
|
"build": "dumi build",
|
|
35
35
|
"compile": "father build && lessc assets/index.less assets/index.css",
|
|
36
|
-
"prepublishOnly": "npm run compile && np --yolo --no-publish
|
|
36
|
+
"prepublishOnly": "npm run compile && np --yolo --no-publish",
|
|
37
37
|
"lint": "eslint src/ docs/examples/ --ext .tsx,.ts,.jsx,.js",
|
|
38
38
|
"test": "rc-test",
|
|
39
39
|
"coverage": "rc-test --coverage",
|
|
@@ -41,29 +41,30 @@
|
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@rc-component/father-plugin": "^1.0.0",
|
|
44
|
-
"@testing-library/jest-dom": "^
|
|
45
|
-
"@testing-library/react": "^
|
|
44
|
+
"@testing-library/jest-dom": "^6.1.4",
|
|
45
|
+
"@testing-library/react": "^14.0.0",
|
|
46
46
|
"@types/classnames": "^2.2.10",
|
|
47
|
-
"@types/jest": "^
|
|
48
|
-
"@types/
|
|
47
|
+
"@types/jest": "^29.5.2",
|
|
48
|
+
"@types/node": "^20.11.6",
|
|
49
|
+
"@types/react": "^18.0.0",
|
|
49
50
|
"@types/react-dom": "^18.0.11",
|
|
51
|
+
"@umijs/fabric": "^4.0.1",
|
|
50
52
|
"cross-env": "^7.0.1",
|
|
51
53
|
"dumi": "^2.1.0",
|
|
52
|
-
"eslint": "^
|
|
54
|
+
"eslint": "^8.51.0",
|
|
53
55
|
"father": "^4.0.0",
|
|
54
|
-
"less": "^
|
|
55
|
-
"np": "^
|
|
56
|
+
"less": "^4.2.0",
|
|
57
|
+
"np": "^9.0.0",
|
|
56
58
|
"rc-test": "^7.0.13",
|
|
57
59
|
"react": "^18.0.0",
|
|
58
60
|
"react-dom": "^18.0.0",
|
|
59
|
-
"regenerator-runtime": "^0.
|
|
60
|
-
"typescript": "^
|
|
61
|
+
"regenerator-runtime": "^0.14.0",
|
|
62
|
+
"typescript": "^5.1.6"
|
|
61
63
|
},
|
|
62
64
|
"dependencies": {
|
|
63
65
|
"@babel/runtime": "^7.23.2",
|
|
64
66
|
"@rc-component/portal": "^1.1.0",
|
|
65
67
|
"classnames": "^2.3.2",
|
|
66
|
-
"rc-align": "5.0.0-0",
|
|
67
68
|
"rc-motion": "^2.0.0",
|
|
68
69
|
"rc-resize-observer": "^1.3.1",
|
|
69
70
|
"rc-util": "^5.38.0"
|
|
@@ -71,9 +72,5 @@
|
|
|
71
72
|
"peerDependencies": {
|
|
72
73
|
"react": ">=16.9.0",
|
|
73
74
|
"react-dom": ">=16.9.0"
|
|
74
|
-
},
|
|
75
|
-
"resolutions": {
|
|
76
|
-
"@types/react": "^16.9.0",
|
|
77
|
-
"@types/react-dom": "^16.9.0"
|
|
78
75
|
}
|
|
79
76
|
}
|