@@ -94,6 +94,28 @@ describe('Range', () => {
9494 fireEvent ( container . getElementsByClassName ( element ) [ 0 ] , touchMove ) ;
9595 }
9696
97+ it ( 'prevents the native default action when a touch drag ends' , ( ) => {
98+ const onChangeComplete = jest . fn ( ) ;
99+ const { container } = render (
100+ < Slider range defaultValue = { [ 20 , 40 ] } onChangeComplete = { onChangeComplete } /> ,
101+ ) ;
102+ const handle = container . getElementsByClassName ( 'rc-slider-handle' ) [ 0 ] ;
103+ const touchStart = createEvent . touchStart ( handle , {
104+ touches : [ { } ] ,
105+ targetTouches : [ { } ] ,
106+ } ) ;
107+ ( touchStart as any ) . targetTouches [ 0 ] . pageX = 20 ;
108+ fireEvent ( handle , touchStart ) ;
109+
110+ const touchEnd = createEvent . touchEnd ( handle ) ;
111+ const preventDefault = jest . fn ( ) ;
112+ Object . defineProperty ( touchEnd , 'preventDefault' , { value : preventDefault } ) ;
113+ fireEvent ( handle , touchEnd ) ;
114+
115+ expect ( preventDefault ) . toHaveBeenCalledTimes ( 1 ) ;
116+ expect ( onChangeComplete ) . toHaveBeenCalledWith ( [ 20 , 40 ] ) ;
117+ } ) ;
118+
97119 it ( 'should render Range with correct DOM structure' , ( ) => {
98120 const { asFragment } = render ( < Slider range /> ) ;
99121 expect ( asFragment ( ) . firstChild ) . toMatchSnapshot ( ) ;
@@ -140,9 +162,7 @@ describe('Range', () => {
140162 } ) ;
141163
142164 it ( 'should render Range without tabIndex (equal null) correctly' , ( ) => {
143- const { container } = render (
144- < Slider range tabIndex = { [ null , null ] as any } /> ,
145- ) ;
165+ const { container } = render ( < Slider range tabIndex = { [ null , null ] as any } /> ) ;
146166 expect ( container . getElementsByClassName ( 'rc-slider-handle' ) [ 0 ] ) . not . toHaveAttribute ( 'tabIndex' ) ;
147167 expect ( container . getElementsByClassName ( 'rc-slider-handle' ) [ 1 ] ) . not . toHaveAttribute ( 'tabIndex' ) ;
148168 } ) ;
@@ -872,7 +892,12 @@ describe('Range', () => {
872892 it ( 'respects handle disabled state and boolean disabled fallback' , ( ) => {
873893 const onChange = jest . fn ( ) ;
874894 const { container, rerender } = render (
875- < Slider range defaultValue = { [ 0 , 50 , 100 ] } disabled = { [ true , false , true ] } onChange = { onChange } /> ,
895+ < Slider
896+ range
897+ defaultValue = { [ 0 , 50 , 100 ] }
898+ disabled = { [ true , false , true ] }
899+ onChange = { onChange }
900+ /> ,
876901 ) ;
877902
878903 const disabledHandle = getHandle ( container , 0 ) ;
@@ -909,17 +934,23 @@ describe('Range', () => {
909934 expect ( onChange ) . toHaveBeenCalledWith ( [ 0 , 10 , 100 ] ) ;
910935
911936 onChange . mockClear ( ) ;
912- rerender ( < Slider range value = { [ 20 , 50 , 80 ] } disabled = { [ true , false , false ] } onChange = { onChange } /> ) ;
937+ rerender (
938+ < Slider range value = { [ 20 , 50 , 80 ] } disabled = { [ true , false , false ] } onChange = { onChange } /> ,
939+ ) ;
913940 doMouseDown ( container , 10 , 'rc-slider' , true ) ;
914941 fireEvent . mouseUp ( document ) ;
915942 expect ( onChange ) . not . toHaveBeenCalled ( ) ;
916943
917- rerender ( < Slider range value = { [ 20 , 50 , 80 ] } disabled = { [ false , false , true ] } onChange = { onChange } /> ) ;
944+ rerender (
945+ < Slider range value = { [ 20 , 50 , 80 ] } disabled = { [ false , false , true ] } onChange = { onChange } /> ,
946+ ) ;
918947 doMouseDown ( container , 90 , 'rc-slider' , true ) ;
919948 fireEvent . mouseUp ( document ) ;
920949 expect ( onChange ) . not . toHaveBeenCalled ( ) ;
921950
922- rerender ( < Slider range value = { [ 0 , 50 , 100 ] } disabled = { [ true , true , true ] } onChange = { onChange } /> ) ;
951+ rerender (
952+ < Slider range value = { [ 0 , 50 , 100 ] } disabled = { [ true , true , true ] } onChange = { onChange } /> ,
953+ ) ;
923954 doMouseDown ( container , 10 , 'rc-slider' , true ) ;
924955 fireEvent . mouseUp ( document ) ;
925956 expect ( onChange ) . not . toHaveBeenCalled ( ) ;
@@ -963,7 +994,12 @@ describe('Range', () => {
963994 it ( 'disables draggableTrack only when rendered handles are disabled' , ( ) => {
964995 const onChange = jest . fn ( ) ;
965996 const { container, unmount } = render (
966- < Slider range = { { draggableTrack : true } } defaultValue = { [ 0 , 50 ] } disabled = { [ false , true ] } onChange = { onChange } /> ,
997+ < Slider
998+ range = { { draggableTrack : true } }
999+ defaultValue = { [ 0 , 50 ] }
1000+ disabled = { [ false , true ] }
1001+ onChange = { onChange }
1002+ /> ,
9671003 ) ;
9681004
9691005 const track = container . getElementsByClassName ( 'rc-slider-track' ) [ 0 ] ;
@@ -1002,7 +1038,12 @@ describe('Range', () => {
10021038 it ( 'keeps keyboard movement inside disabled handle boundaries' , ( ) => {
10031039 const onChange = jest . fn ( ) ;
10041040 const { container, unmount } = render (
1005- < Slider range defaultValue = { [ 20 , 50 , 80 ] } disabled = { [ false , true , false ] } onChange = { onChange } /> ,
1041+ < Slider
1042+ range
1043+ defaultValue = { [ 20 , 50 , 80 ] }
1044+ disabled = { [ false , true , false ] }
1045+ onChange = { onChange }
1046+ /> ,
10061047 ) ;
10071048
10081049 repeatKeyDown ( getHandle ( container , 0 ) , keyCode . RIGHT , 50 ) ;
@@ -1012,7 +1053,12 @@ describe('Range', () => {
10121053 onChange . mockClear ( ) ;
10131054
10141055 const { container : boundaryContainer } = render (
1015- < Slider range defaultValue = { [ 20 , 50 , 80 ] } disabled = { [ true , false , true ] } onChange = { onChange } /> ,
1056+ < Slider
1057+ range
1058+ defaultValue = { [ 20 , 50 , 80 ] }
1059+ disabled = { [ true , false , true ] }
1060+ onChange = { onChange }
1061+ /> ,
10161062 ) ;
10171063 const middleHandle = getHandle ( boundaryContainer , 1 ) ;
10181064
@@ -1029,7 +1075,13 @@ describe('Range', () => {
10291075 it ( 'respects pushable boundaries around disabled handles' , ( ) => {
10301076 const onChange = jest . fn ( ) ;
10311077 const { container } = render (
1032- < Slider range defaultValue = { [ 20 , 40 , 60 , 80 ] } disabled = { [ false , true , false , false ] } pushable = { 10 } onChange = { onChange } /> ,
1078+ < Slider
1079+ range
1080+ defaultValue = { [ 20 , 40 , 60 , 80 ] }
1081+ disabled = { [ false , true , false , false ] }
1082+ pushable = { 10 }
1083+ onChange = { onChange }
1084+ /> ,
10331085 ) ;
10341086
10351087 repeatKeyDown ( getHandle ( container , 0 ) , keyCode . UP , 30 ) ;
@@ -1046,7 +1098,13 @@ describe('Range', () => {
10461098 it ( 'respects disabled boundaries with allowCross=false and step=null' , ( ) => {
10471099 const onChange = jest . fn ( ) ;
10481100 const { container, unmount } = render (
1049- < Slider range defaultValue = { [ 20 , 50 , 80 ] } disabled = { [ false , true , false ] } allowCross = { false } onChange = { onChange } /> ,
1101+ < Slider
1102+ range
1103+ defaultValue = { [ 20 , 50 , 80 ] }
1104+ disabled = { [ false , true , false ] }
1105+ allowCross = { false }
1106+ onChange = { onChange }
1107+ /> ,
10501108 ) ;
10511109
10521110 repeatKeyDown ( getHandle ( container , 0 ) , keyCode . RIGHT , 50 ) ;
@@ -1056,7 +1114,15 @@ describe('Range', () => {
10561114 onChange . mockClear ( ) ;
10571115
10581116 const { container : stepContainer } = render (
1059- < Slider range defaultValue = { [ 20 , 50 , 80 ] } disabled = { [ false , true , false ] } step = { null } marks = { { 0 : '0' , 50 : '50' , 100 : '100' } } pushable = { 10 } onChange = { onChange } /> ,
1117+ < Slider
1118+ range
1119+ defaultValue = { [ 20 , 50 , 80 ] }
1120+ disabled = { [ false , true , false ] }
1121+ step = { null }
1122+ marks = { { 0 : '0' , 50 : '50' , 100 : '100' } }
1123+ pushable = { 10 }
1124+ onChange = { onChange }
1125+ /> ,
10601126 ) ;
10611127
10621128 fireEvent . keyDown ( getHandle ( stepContainer , 0 ) , { keyCode : keyCode . RIGHT } ) ;
0 commit comments