@react-aria/interactions 3.22.4 → 3.23.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/dist/createEventHandler.main.js +5 -1
- package/dist/createEventHandler.main.js.map +1 -1
- package/dist/createEventHandler.mjs +5 -1
- package/dist/createEventHandler.module.js +5 -1
- package/dist/createEventHandler.module.js.map +1 -1
- package/dist/textSelection.main.js +0 -2
- package/dist/textSelection.main.js.map +1 -1
- package/dist/textSelection.mjs +0 -2
- package/dist/textSelection.module.js +0 -2
- package/dist/textSelection.module.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/usePress.main.js +14 -17
- package/dist/usePress.main.js.map +1 -1
- package/dist/usePress.mjs +14 -17
- package/dist/usePress.module.js +14 -17
- package/dist/usePress.module.js.map +1 -1
- package/dist/utils.main.js +0 -1
- package/dist/utils.main.js.map +1 -1
- package/dist/utils.mjs +0 -1
- package/dist/utils.module.js +0 -1
- package/dist/utils.module.js.map +1 -1
- package/package.json +7 -6
- package/src/createEventHandler.ts +8 -1
- package/src/textSelection.ts +2 -2
- package/src/usePress.ts +17 -18
- package/src/utils.ts +1 -1
package/src/usePress.ts
CHANGED
|
@@ -433,7 +433,13 @@ export function usePress(props: PressHookProps): PressResult {
|
|
|
433
433
|
|
|
434
434
|
shouldStopPropagation = triggerPressStart(e, state.pointerType);
|
|
435
435
|
|
|
436
|
-
|
|
436
|
+
// Release pointer capture so that touch interactions can leave the original target.
|
|
437
|
+
// This enables onPointerLeave and onPointerEnter to fire.
|
|
438
|
+
let target = e.target as Element;
|
|
439
|
+
if ('releasePointerCapture' in target) {
|
|
440
|
+
target.releasePointerCapture(e.pointerId);
|
|
441
|
+
}
|
|
442
|
+
|
|
437
443
|
addGlobalListener(getOwnerDocument(e.currentTarget), 'pointerup', onPointerUp, false);
|
|
438
444
|
addGlobalListener(getOwnerDocument(e.currentTarget), 'pointercancel', onPointerCancel, false);
|
|
439
445
|
}
|
|
@@ -467,27 +473,20 @@ export function usePress(props: PressHookProps): PressResult {
|
|
|
467
473
|
}
|
|
468
474
|
|
|
469
475
|
// Only handle left clicks
|
|
470
|
-
|
|
471
|
-
// when the touch isn't over the target, so double check.
|
|
472
|
-
if (e.button === 0 && isOverTarget(e, e.currentTarget)) {
|
|
476
|
+
if (e.button === 0) {
|
|
473
477
|
triggerPressUp(e, state.pointerType || e.pointerType);
|
|
474
478
|
}
|
|
475
479
|
};
|
|
476
480
|
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
if (e.pointerId !== state.activePointerId) {
|
|
482
|
-
return;
|
|
481
|
+
pressProps.onPointerEnter = (e) => {
|
|
482
|
+
if (e.pointerId === state.activePointerId && state.target && !state.isOverTarget && state.pointerType != null) {
|
|
483
|
+
state.isOverTarget = true;
|
|
484
|
+
triggerPressStart(createEvent(state.target, e), state.pointerType);
|
|
483
485
|
}
|
|
486
|
+
};
|
|
484
487
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
state.isOverTarget = true;
|
|
488
|
-
triggerPressStart(createEvent(state.target, e), state.pointerType);
|
|
489
|
-
}
|
|
490
|
-
} else if (state.target && state.isOverTarget && state.pointerType != null) {
|
|
488
|
+
pressProps.onPointerLeave = (e) => {
|
|
489
|
+
if (e.pointerId === state.activePointerId && state.target && state.isOverTarget && state.pointerType != null) {
|
|
491
490
|
state.isOverTarget = false;
|
|
492
491
|
triggerPressEnd(createEvent(state.target, e), state.pointerType, false);
|
|
493
492
|
cancelOnPointerExit(e);
|
|
@@ -496,7 +495,7 @@ export function usePress(props: PressHookProps): PressResult {
|
|
|
496
495
|
|
|
497
496
|
let onPointerUp = (e: PointerEvent) => {
|
|
498
497
|
if (e.pointerId === state.activePointerId && state.isPressed && e.button === 0 && state.target) {
|
|
499
|
-
if (
|
|
498
|
+
if (state.target.contains(e.target as Element) && state.pointerType != null) {
|
|
500
499
|
triggerPressEnd(createEvent(state.target, e), state.pointerType);
|
|
501
500
|
} else if (state.isOverTarget && state.pointerType != null) {
|
|
502
501
|
triggerPressEnd(createEvent(state.target, e), state.pointerType, false);
|
|
@@ -787,7 +786,7 @@ export function usePress(props: PressHookProps): PressResult {
|
|
|
787
786
|
]);
|
|
788
787
|
|
|
789
788
|
// Remove user-select: none in case component unmounts immediately after pressStart
|
|
790
|
-
|
|
789
|
+
|
|
791
790
|
useEffect(() => {
|
|
792
791
|
return () => {
|
|
793
792
|
if (!allowTextSelectionOnPress) {
|
package/src/utils.ts
CHANGED
|
@@ -68,7 +68,7 @@ export function useSyntheticBlurEvent<Target = Element>(onBlur: (e: ReactFocusEv
|
|
|
68
68
|
});
|
|
69
69
|
|
|
70
70
|
// Clean up MutationObserver on unmount. See below.
|
|
71
|
-
|
|
71
|
+
|
|
72
72
|
useLayoutEffect(() => {
|
|
73
73
|
const state = stateRef.current;
|
|
74
74
|
return () => {
|