@@ -2,6 +2,7 @@ import $ from 'jquery';
22import pointerMock from '../../helpers/pointerMock.js' ;
33
44import 'viz/chart' ;
5+ import { SCROLL_PREVENTION_TIMEOUT } from '__internal/viz/chart_components/zoom_and_pan' ;
56
67const CHART_SVG_SELECTOR = 'svg.dxc.dxc-chart' ;
78const TOOLTIP_CLASS = 'dxc-tooltip' ;
@@ -3211,6 +3212,57 @@ QUnit.test('Default behavior - no prevent. On mouse wheel', function(assert) {
32113212 assert . equal ( this . trackerStopHandling . callCount , 0 ) ;
32123213} ) ;
32133214
3215+ QUnit . test ( 'On mouse wheel. Should prevent scroll page after max zoom level reached (T1314606)' , function ( assert ) {
3216+ const preventDefault = sinon . spy ( ) ;
3217+ const stopPropagation = sinon . spy ( ) ;
3218+ const onZoomEnd = sinon . spy ( ) ;
3219+ const wholeRange = { startValue : 0 , endValue : 5 } ;
3220+ const chart = this . createChart ( {
3221+ argumentAxis : {
3222+ visualRange : {
3223+ startValue : 0.1 ,
3224+ endValue : 4.9
3225+ } ,
3226+ wholeRange,
3227+ } ,
3228+ zoomAndPan : {
3229+ argumentAxis : 'zoom' ,
3230+ allowMouseWheel : true
3231+ } ,
3232+ onZoomEnd : onZoomEnd
3233+ } ) ;
3234+
3235+ const $root = $ ( chart . _renderer . root . element ) ;
3236+
3237+ $root . trigger ( new $ . Event ( 'dxmousewheel' , { d : - 10 , pageX : 200 , pageY : 250 , preventDefault : preventDefault , stopPropagation : stopPropagation } ) ) ;
3238+
3239+ assert . deepEqual ( onZoomEnd . getCall ( 0 ) . args [ 0 ] . range , wholeRange , 'chart zoomed out to wholeRange' ) ;
3240+ assert . strictEqual ( preventDefault . callCount , 1 , 'after zoom e.preventDefault called' ) ;
3241+ assert . strictEqual ( stopPropagation . callCount , 1 , 'after zoom e.stopPropagation called' ) ;
3242+ assert . strictEqual ( this . trackerStopHandling . callCount , 1 , 'chart stopped wheel event handling' ) ;
3243+
3244+ this . clock . tick ( SCROLL_PREVENTION_TIMEOUT / 2 ) ;
3245+ $root . trigger ( new $ . Event ( 'dxmousewheel' , { d : - 10 , pageX : 200 , pageY : 250 , preventDefault : preventDefault , stopPropagation : stopPropagation } ) ) ;
3246+
3247+ assert . equal ( preventDefault . callCount , 2 , 'e.preventDefault called' ) ;
3248+ assert . equal ( stopPropagation . callCount , 2 , 'e.stopPropagation called' ) ;
3249+ assert . equal ( this . trackerStopHandling . callCount , 1 , 'chart not passed event handling in SCROLL_PREVENTION_TIMEOUT window after zoom' ) ;
3250+
3251+ this . clock . tick ( SCROLL_PREVENTION_TIMEOUT - 10 ) ;
3252+ $root . trigger ( new $ . Event ( 'dxmousewheel' , { d : - 10 , pageX : 200 , pageY : 250 , preventDefault : preventDefault , stopPropagation : stopPropagation } ) ) ;
3253+
3254+ assert . equal ( preventDefault . callCount , 3 , 'e.preventDefault called' ) ;
3255+ assert . equal ( stopPropagation . callCount , 3 , 'e.stopPropagation called' ) ;
3256+ assert . equal ( this . trackerStopHandling . callCount , 1 , 'chart not passed event handling in SCROLL_PREVENTION_TIMEOUT window after last wheel event on chart' ) ;
3257+
3258+ this . clock . tick ( SCROLL_PREVENTION_TIMEOUT + 10 ) ;
3259+ $root . trigger ( new $ . Event ( 'dxmousewheel' , { d : - 10 , pageX : 200 , pageY : 250 , preventDefault : preventDefault , stopPropagation : stopPropagation } ) ) ;
3260+
3261+ assert . equal ( preventDefault . callCount , 3 , 'chart not prevents event handling after SCROLL_PREVENTION_TIMEOUT expires, e.preventDefault not called' ) ;
3262+ assert . equal ( stopPropagation . callCount , 3 , 'chart not prevent event propagation after SCROLL_PREVENTION_TIMEOUT expires, e.stopPropagation not called' ) ;
3263+ assert . equal ( this . trackerStopHandling . callCount , 1 , 'chart._stopCurrentHandling not called after SCROLL_PREVENTION_TIMEOUT window' ) ;
3264+ } ) ;
3265+
32143266QUnit . test ( 'On pinch zoom' , function ( assert ) {
32153267 const preventDefault = sinon . spy ( ) ;
32163268 const stopPropagation = sinon . spy ( ) ;
0 commit comments