Skip to content

Commit 0e0c772

Browse files
authored
fix: Safari drag issue (#46)
1 parent 9856873 commit 0e0c772

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

.changeset/few-dingos-sit.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"vaul-svelte": patch
3+
---
4+
5+
fix bug preventing drawer from dragging on Safari

src/lib/internal/vaul.ts

+23-3
Original file line numberDiff line numberDiff line change
@@ -916,10 +916,30 @@ function getDistanceMoved(
916916
direction: DrawerDirection,
917917
event: SvelteEvent<PointerEvent | MouseEvent | TouchEvent, HTMLElement>
918918
) {
919-
const screenY = event instanceof TouchEvent ? event.changedTouches[0].screenY : event.screenY;
920-
const screenX = event instanceof TouchEvent ? event.changedTouches[0].screenX : event.screenX;
919+
if (event.type.startsWith("touch")) {
920+
return getDistanceMovedForTouch(pointerStart, direction, event as TouchEvent);
921+
} else {
922+
return getDistanceMovedForPointer(pointerStart, direction, event as PointerEvent);
923+
}
924+
}
921925

922-
return pointerStart - (isVertical(direction) ? screenY : screenX);
926+
function getDistanceMovedForPointer(
927+
pointerStart: number,
928+
direction: DrawerDirection,
929+
event: PointerEvent | MouseEvent
930+
) {
931+
return pointerStart - (isVertical(direction) ? event.screenY : event.screenX);
932+
}
933+
934+
function getDistanceMovedForTouch(
935+
pointerStart: number,
936+
direction: DrawerDirection,
937+
event: TouchEvent
938+
) {
939+
return (
940+
pointerStart -
941+
(isVertical(direction) ? event.changedTouches[0].screenY : event.changedTouches[0].screenX)
942+
);
923943
}
924944

925945
function getDirectionMultiplier(direction: DrawerDirection) {

0 commit comments

Comments
 (0)