Skip to content

Commit a43533f

Browse files
committed
refactor: update drag event structure in Carousel and useDragging to include isTouch flag
1 parent 99dd025 commit a43533f

File tree

2 files changed

+20
-11
lines changed

2 files changed

+20
-11
lines changed

src/components/Carousel/Carousel.ts

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -409,18 +409,27 @@ export const Carousel = defineComponent({
409409
prev,
410410
})
411411

412-
const onDrag = ({ deltaX, deltaY }: { deltaX: number; deltaY: number }) => {
412+
const onDrag = ({
413+
delta,
414+
isTouch,
415+
}: {
416+
delta: { x: number; y: number }
417+
isTouch: boolean
418+
}) => {
419+
const threshold = isTouch
420+
? typeof config.touchDrag === 'object'
421+
? (config.touchDrag?.threshold ?? 0.3)
422+
: 0.3
423+
: typeof config.mouseDrag === 'object'
424+
? (config.mouseDrag?.threshold ?? 0.3)
425+
: 0.3
426+
413427
const draggedSlides = getDraggedSlidesCount({
414428
isVertical: isVertical.value,
415429
isReversed: isReversed.value,
416-
dragged: { x: deltaX, y: deltaY },
430+
dragged: delta,
417431
effectiveSlideSize: effectiveSlideSize.value,
418-
threshold:
419-
typeof config.mouseDrag === 'object'
420-
? (config.mouseDrag?.threshold ?? 0.3)
421-
: typeof config.touchDrag === 'object'
422-
? (config.touchDrag?.threshold ?? 0.3)
423-
: 0.3,
432+
threshold,
424433
})
425434

426435
activeSlideIndex.value = config.wrapAround
@@ -431,7 +440,7 @@ export const Carousel = defineComponent({
431440
min: minSlideIndex.value,
432441
})
433442

434-
emit('drag', { deltaX, deltaY })
443+
emit('drag', delta)
435444
}
436445
const onDragEnd = () => {
437446
slideTo(activeSlideIndex.value)

src/composables/useDragging.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { ref, reactive } from 'vue'
33
import { throttle } from '@/utils'
44

55
export interface UseDraggingOptions {
6-
onDrag?: (data: { deltaX: number; deltaY: number }) => void
6+
onDrag?: (data: { delta: { x: number; y: number }; isTouch: boolean }) => void
77
onDragStart?: () => void
88
onDragEnd?: () => void
99
isSliding?: boolean
@@ -59,7 +59,7 @@ export function useDragging(options: UseDraggingOptions = {}) {
5959
dragged.x = currentX - startPosition.x
6060
dragged.y = currentY - startPosition.y
6161

62-
options.onDrag?.({ deltaX: dragged.x, deltaY: dragged.y })
62+
options.onDrag?.({ delta: { x: dragged.x, y: dragged.y }, isTouch })
6363
})
6464

6565
const handleDragEnd = (): void => {

0 commit comments

Comments
 (0)