@@ -52,13 +52,13 @@ update lift msg model =
52
52
TransitionEnd ->
53
53
( Just { model | inTransit = False }, Cmd . none )
54
54
55
- InteractionStart _ { pageX } ->
55
+ InteractionStart _ { clientX } ->
56
56
let
57
57
geometry =
58
58
Maybe . withDefault defaultGeometry model. geometry
59
59
60
60
activeValue =
61
- valueFromPageX geometry pageX
61
+ valueFromClientX geometry clientX
62
62
in
63
63
( Just
64
64
{ model
@@ -70,13 +70,13 @@ update lift msg model =
70
70
, Cmd . none
71
71
)
72
72
73
- ThumbContainerPointer _ { pageX } ->
73
+ ThumbContainerPointer _ { clientX } ->
74
74
let
75
75
geometry =
76
76
Maybe . withDefault defaultGeometry model. geometry
77
77
78
78
activeValue =
79
- valueFromPageX geometry pageX
79
+ valueFromClientX geometry clientX
80
80
in
81
81
( Just
82
82
{ model
@@ -88,14 +88,14 @@ update lift msg model =
88
88
, Cmd . none
89
89
)
90
90
91
- Drag { pageX } ->
91
+ Drag { clientX } ->
92
92
if model. active then
93
93
let
94
94
geometry =
95
95
Maybe . withDefault defaultGeometry model. geometry
96
96
97
97
activeValue =
98
- valueFromPageX geometry pageX
98
+ valueFromClientX geometry clientX
99
99
in
100
100
( Just
101
101
{ model
@@ -131,14 +131,16 @@ update lift msg model =
131
131
( Just { model | active = False , activeValue = Nothing }, Cmd . none )
132
132
133
133
134
- valueFromPageX : Geometry -> Float -> Float
135
- valueFromPageX geometry pageX =
134
+ {- Computes the new value from the clientX position -}
135
+
136
+ valueFromClientX : Geometry -> Float -> Float
137
+ valueFromClientX geometry clientX =
136
138
let
137
139
isRtl =
138
140
False
139
141
140
142
xPos =
141
- pageX - geometry. rect. left
143
+ clientX - geometry. rect. left
142
144
143
145
pctComplete =
144
146
if isRtl then
@@ -456,7 +458,7 @@ slider lift model options _ =
456
458
Options . many <|
457
459
List . map
458
460
( \ event ->
459
- Options . on event ( Decode . map ( lift << InteractionStart event) decodePageX )
461
+ Options . on event ( Decode . map ( lift << InteractionStart event) decodeClientX )
460
462
)
461
463
downs
462
464
, when ( config. onChange /= Nothing ) <|
@@ -465,18 +467,18 @@ slider lift model options _ =
465
467
( \ event ->
466
468
Options . on event <|
467
469
Decode . map
468
- ( \ { pageX } ->
470
+ ( \ { clientX } ->
469
471
let
470
472
activeValue =
471
- valueFromPageX geometry pageX
473
+ valueFromClientX geometry clientX
472
474
|> discretize geometry
473
475
in
474
476
Maybe . map
475
477
( \ changeHandler -> changeHandler activeValue)
476
478
config. onChange
477
479
|> Maybe . withDefault ( lift NoOp )
478
480
)
479
- decodePageX
481
+ decodeClientX
480
482
)
481
483
downs
482
484
, when ( config. onInput /= Nothing ) <|
@@ -485,18 +487,18 @@ slider lift model options _ =
485
487
( \ event ->
486
488
Options . on event <|
487
489
Decode . map
488
- ( \ { pageX } ->
490
+ ( \ { clientX } ->
489
491
let
490
492
activeValue =
491
- valueFromPageX geometry pageX
493
+ valueFromClientX geometry clientX
492
494
|> discretize geometry
493
495
in
494
496
Maybe . map
495
497
( \ inputHandler -> inputHandler activeValue)
496
498
config. onInput
497
499
|> Maybe . withDefault ( lift NoOp )
498
500
)
499
- decodePageX
501
+ decodeClientX
500
502
)
501
503
downs
502
504
, -- Note: In some instances `Up` fires before `InteractionStart`.
@@ -513,16 +515,16 @@ slider lift model options _ =
513
515
( \ handler ->
514
516
handler <|
515
517
Decode . map
516
- ( \ { pageX } ->
518
+ ( \ { clientX } ->
517
519
let
518
520
activeValue =
519
- valueFromPageX geometry pageX
521
+ valueFromClientX geometry clientX
520
522
|> discretize geometry
521
523
in
522
524
Maybe . map ( \ changeHandler -> changeHandler activeValue) config. onChange
523
525
|> Maybe . withDefault ( lift NoOp )
524
526
)
525
- decodePageX
527
+ decodeClientX
526
528
)
527
529
ups
528
530
, when (( config. onInput /= Nothing ) && model. active) <|
@@ -531,25 +533,25 @@ slider lift model options _ =
531
533
( \ handler ->
532
534
handler <|
533
535
Decode . map
534
- ( \ { pageX } ->
536
+ ( \ { clientX } ->
535
537
let
536
538
activeValue =
537
- valueFromPageX geometry pageX
539
+ valueFromClientX geometry clientX
538
540
|> discretize geometry
539
541
in
540
542
Maybe . map
541
543
( \ inputHandler -> inputHandler activeValue)
542
544
config. onInput
543
545
|> Maybe . withDefault ( lift NoOp )
544
546
)
545
- decodePageX
547
+ decodeClientX
546
548
)
547
549
ups
548
550
, when model. active <|
549
551
Options . many <|
550
552
List . map
551
553
( \ handler ->
552
- handler ( Decode . map ( lift << Drag ) decodePageX )
554
+ handler ( Decode . map ( lift << Drag ) decodeClientX )
553
555
)
554
556
moves
555
557
, when (( config. onInput /= Nothing ) && model. active) <|
@@ -558,18 +560,18 @@ slider lift model options _ =
558
560
( \ handler ->
559
561
handler <|
560
562
Decode . map
561
- ( \ { pageX } ->
563
+ ( \ { clientX } ->
562
564
let
563
565
activeValue =
564
- valueFromPageX geometry pageX
566
+ valueFromClientX geometry clientX
565
567
|> discretize geometry
566
568
in
567
569
Maybe . map
568
570
( \ inputHandler -> inputHandler activeValue)
569
571
config. onInput
570
572
|> Maybe . withDefault ( lift NoOp )
571
573
)
572
- decodePageX
574
+ decodeClientX
573
575
)
574
576
moves
575
577
]
@@ -615,7 +617,7 @@ slider lift model options _ =
615
617
, preventDefault = False
616
618
}
617
619
)
618
- ( Decode . map ( ThumbContainerPointer event) decodePageX )
620
+ ( Decode . map ( ThumbContainerPointer event) decodeClientX )
619
621
)
620
622
)
621
623
)
@@ -731,13 +733,18 @@ discretize geometry continuousValue =
731
733
quantizedVal
732
734
733
735
734
- decodePageX : Decoder { pageX : Float }
735
- decodePageX =
736
- Decode . map ( \ pageX -> { pageX = pageX } ) <|
736
+ {- Get the appropriate clientX value.
737
+
738
+ NOTE: changedTouches is a property introduced by elm-mdc.js and only
739
+ valid for the globaltouchend event.
740
+ -}
741
+ decodeClientX : Decoder { clientX : Float }
742
+ decodeClientX =
743
+ Decode . map ( \ clientX -> { clientX = clientX } ) <|
737
744
Decode . oneOf
738
- [ Decode . at [ " targetTouches" , " 0" , " pageX " ] Decode . float
745
+ [ Decode . at [ " targetTouches" , " 0" , " clientX " ] Decode . float
739
746
, Decode . at [ " changedTouches" , " 0" , " pageX" ] Decode . float
740
- , Decode . at [ " pageX " ] Decode . float
747
+ , Decode . at [ " clientX " ] Decode . float
741
748
]
742
749
743
750
0 commit comments