@@ -27,6 +27,7 @@ const emits = defineEmits<{
2727 (e : ' deleting' ): void
2828 (e : ' cancelDelete' ): void
2929 (e : ' moveDone' ): void
30+ (e : ' change' ): void
3031}>()
3132
3233defineSlots <{
@@ -42,6 +43,8 @@ const cursor = computed(() => props.disabled ? 'cursor-not-allowed' : removable.
4243
4344const deleting = ref (false )
4445
46+ let moved = false
47+
4548function setTrackCursor(cursor : string | undefined ) {
4649 if (! trackRef ?.value )
4750 return
@@ -70,6 +73,7 @@ function shouldDelete(offset: number) {
7073function onPointerMove(e : PointerEvent ) {
7174 if (! thumbRef .value || ! trackRef ?.value || props .disabled )
7275 return
76+ moved = true
7377 const trackRect = trackRef .value .getBoundingClientRect ()
7478 const offset = props .vertical ? e .clientY - trackRect .top : e .clientX - trackRect .left
7579 const percent = offset / (props .vertical ? trackRect .height : trackRect .width ) * 100
@@ -87,6 +91,10 @@ function onPointerUp(e: PointerEvent) {
8791 window .removeEventListener (' pointermove' , onPointerMove )
8892 window .removeEventListener (' pointerup' , onPointerUp )
8993 window .removeEventListener (' pointercancel' , onPointerUp )
94+ if (moved ) {
95+ emits (' change' )
96+ moved = false
97+ }
9098 if (e .type === ' pointercancel' || props .disabled ) {
9199 setTrackCursor (undefined )
92100 emits (' moveDone' )
@@ -111,6 +119,7 @@ async function onPointerDown(e: PointerEvent) {
111119 return
112120 }
113121 setTrackCursor (cursor .value )
122+ moved = false
114123 window .addEventListener (' pointermove' , onPointerMove , { passive: false })
115124 window .addEventListener (' pointerup' , onPointerUp )
116125 window .addEventListener (' pointercancel' , onPointerUp )
0 commit comments