@@ -31,7 +31,7 @@ type SliderProvide = {
31
31
numTicks : Ref < number >
32
32
onSliderMousedown : ( e : MouseEvent ) => void
33
33
onSliderTouchstart : ( e : TouchEvent ) => void
34
- parseMouseMove : ( e : MouseEvent | TouchEvent ) => number
34
+ parseMouseMove : ( e : MouseEvent | TouchEvent ) => number | void
35
35
position : ( val : number ) => number
36
36
readonly : Ref < boolean | null | undefined >
37
37
rounded : Ref < boolean | number | string | undefined >
@@ -205,7 +205,11 @@ export const useSlider = ({
205
205
const trackContainerRef = ref < VSliderTrack | undefined > ( )
206
206
const activeThumbRef = ref < HTMLElement | undefined > ( )
207
207
208
- function parseMouseMove ( e : MouseEvent | TouchEvent ) : number {
208
+ function parseMouseMove ( e : MouseEvent | TouchEvent ) : number | void {
209
+ const el : HTMLElement = trackContainerRef . value ?. $el
210
+
211
+ if ( ! el ) return
212
+
209
213
const vertical = props . direction === 'vertical'
210
214
const start = vertical ? 'top' : 'left'
211
215
const length = vertical ? 'height' : 'width'
@@ -214,7 +218,7 @@ export const useSlider = ({
214
218
const {
215
219
[ start ] : trackStart ,
216
220
[ length ] : trackLength ,
217
- } = trackContainerRef . value ?. $ el. getBoundingClientRect ( )
221
+ } = el . getBoundingClientRect ( )
218
222
const clickOffset = getPosition ( e , position )
219
223
220
224
// It is possible for left to be NaN, force to number
@@ -226,13 +230,17 @@ export const useSlider = ({
226
230
}
227
231
228
232
const handleStop = ( e : MouseEvent | TouchEvent ) => {
229
- onSliderEnd ( { value : parseMouseMove ( e ) } )
233
+ const value = parseMouseMove ( e )
234
+ if ( value != null ) {
235
+ onSliderEnd ( { value } )
236
+ }
230
237
231
238
mousePressed . value = false
232
239
startOffset . value = 0
233
240
}
234
241
235
242
const handleStart = ( e : MouseEvent | TouchEvent ) => {
243
+ const value = parseMouseMove ( e )
236
244
activeThumbRef . value = getActiveThumb ( e )
237
245
238
246
if ( ! activeThumbRef . value ) return
@@ -243,17 +251,24 @@ export const useSlider = ({
243
251
startOffset . value = getOffset ( e , activeThumbRef . value , props . direction )
244
252
} else {
245
253
startOffset . value = 0
246
- onSliderMove ( { value : parseMouseMove ( e ) } )
254
+ if ( value != null ) {
255
+ onSliderMove ( { value } )
256
+ }
247
257
}
248
258
249
- onSliderStart ( { value : parseMouseMove ( e ) } )
259
+ if ( value != null ) {
260
+ onSliderStart ( { value } )
261
+ }
250
262
nextTick ( ( ) => activeThumbRef . value ?. focus ( ) )
251
263
}
252
264
253
265
const moveListenerOptions = { passive : true , capture : true }
254
266
255
267
function onMouseMove ( e : MouseEvent | TouchEvent ) {
256
- onSliderMove ( { value : parseMouseMove ( e ) } )
268
+ const value = parseMouseMove ( e )
269
+ if ( value != null ) {
270
+ onSliderMove ( { value } )
271
+ }
257
272
}
258
273
259
274
function onSliderMouseUp ( e : MouseEvent ) {
0 commit comments