@@ -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' ;
@@ -3109,6 +3110,57 @@ QUnit.test('Default behavior - no prevent. On mouse wheel', function(assert) {
31093110 assert . equal ( this . trackerStopHandling . callCount , 0 ) ;
31103111} ) ;
31113112
3113+ QUnit . test ( 'On mouse wheel. Should prevent scroll page after max zoom level reached (T1314606)' , function ( assert ) {
3114+ const preventDefault = sinon . spy ( ) ;
3115+ const stopPropagation = sinon . spy ( ) ;
3116+ const onZoomEnd = sinon . spy ( ) ;
3117+ const wholeRange = { startValue : 0 , endValue : 5 } ;
3118+ const chart = this . createChart ( {
3119+ argumentAxis : {
3120+ visualRange : {
3121+ startValue : 0.1 ,
3122+ endValue : 4.9
3123+ } ,
3124+ wholeRange,
3125+ } ,
3126+ zoomAndPan : {
3127+ argumentAxis : 'zoom' ,
3128+ allowMouseWheel : true
3129+ } ,
3130+ onZoomEnd : onZoomEnd
3131+ } ) ;
3132+
3133+ const $root = $ ( chart . _renderer . root . element ) ;
3134+
3135+ $root . trigger ( new $ . Event ( 'dxmousewheel' , { d : - 10 , pageX : 200 , pageY : 250 , preventDefault : preventDefault , stopPropagation : stopPropagation } ) ) ;
3136+
3137+ assert . deepEqual ( onZoomEnd . getCall ( 0 ) . args [ 0 ] . range , wholeRange , 'chart zoomed out to wholeRange' ) ;
3138+ assert . strictEqual ( preventDefault . callCount , 1 , 'after zoom e.preventDefault called' ) ;
3139+ assert . strictEqual ( stopPropagation . callCount , 1 , 'after zoom e.stopPropagation called' ) ;
3140+ assert . strictEqual ( this . trackerStopHandling . callCount , 1 , 'chart stopped wheel event handling' ) ;
3141+
3142+ this . clock . tick ( SCROLL_PREVENTION_TIMEOUT / 2 ) ;
3143+ $root . trigger ( new $ . Event ( 'dxmousewheel' , { d : - 10 , pageX : 200 , pageY : 250 , preventDefault : preventDefault , stopPropagation : stopPropagation } ) ) ;
3144+
3145+ assert . equal ( preventDefault . callCount , 2 , 'e.preventDefault called' ) ;
3146+ assert . equal ( stopPropagation . callCount , 2 , 'e.stopPropagation called' ) ;
3147+ assert . equal ( this . trackerStopHandling . callCount , 1 , 'chart not passed event handling in SCROLL_PREVENTION_TIMEOUT window after zoom' ) ;
3148+
3149+ this . clock . tick ( SCROLL_PREVENTION_TIMEOUT - 10 ) ;
3150+ $root . trigger ( new $ . Event ( 'dxmousewheel' , { d : - 10 , pageX : 200 , pageY : 250 , preventDefault : preventDefault , stopPropagation : stopPropagation } ) ) ;
3151+
3152+ assert . equal ( preventDefault . callCount , 3 , 'e.preventDefault called' ) ;
3153+ assert . equal ( stopPropagation . callCount , 3 , 'e.stopPropagation called' ) ;
3154+ assert . equal ( this . trackerStopHandling . callCount , 1 , 'chart not passed event handling in SCROLL_PREVENTION_TIMEOUT window after last wheel event on chart' ) ;
3155+
3156+ this . clock . tick ( SCROLL_PREVENTION_TIMEOUT + 10 ) ;
3157+ $root . trigger ( new $ . Event ( 'dxmousewheel' , { d : - 10 , pageX : 200 , pageY : 250 , preventDefault : preventDefault , stopPropagation : stopPropagation } ) ) ;
3158+
3159+ assert . equal ( preventDefault . callCount , 3 , 'chart not prevents event handling after SCROLL_PREVENTION_TIMEOUT expires, e.preventDefault not called' ) ;
3160+ assert . equal ( stopPropagation . callCount , 3 , 'chart not prevent event propagation after SCROLL_PREVENTION_TIMEOUT expires, e.stopPropagation not called' ) ;
3161+ assert . equal ( this . trackerStopHandling . callCount , 1 , 'chart._stopCurrentHandling not called after SCROLL_PREVENTION_TIMEOUT window' ) ;
3162+ } ) ;
3163+
31123164QUnit . test ( 'On pinch zoom' , function ( assert ) {
31133165 const preventDefault = sinon . spy ( ) ;
31143166 const stopPropagation = sinon . spy ( ) ;
0 commit comments