@@ -7,7 +7,7 @@ describe('InputNumber.Wheel', () => {
77 const onChange = jest . fn ( ) ;
88 const { container } = render ( < InputNumber onChange = { onChange } changeOnWheel /> ) ;
99 fireEvent . focus ( container . firstChild ) ;
10- fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : - 1 } ) ;
10+ fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : - 100 } ) ;
1111 expect ( onChange ) . toHaveBeenCalledWith ( 1 ) ;
1212 } ) ;
1313
@@ -23,15 +23,15 @@ describe('InputNumber.Wheel', () => {
2323 keyCode : KeyCode . SHIFT ,
2424 shiftKey : true ,
2525 } ) ;
26- fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : - 1 } ) ;
26+ fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : - 100 } ) ;
2727 expect ( onChange ) . toHaveBeenCalledWith ( 1.3 ) ;
2828 } ) ;
2929
3030 it ( 'wheel down' , ( ) => {
3131 const onChange = jest . fn ( ) ;
3232 const { container } = render ( < InputNumber onChange = { onChange } changeOnWheel /> ) ;
3333 fireEvent . focus ( container . firstChild ) ;
34- fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : 1 } ) ;
34+ fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : 100 } ) ;
3535 expect ( onChange ) . toHaveBeenCalledWith ( - 1 ) ;
3636 } ) ;
3737
@@ -47,7 +47,7 @@ describe('InputNumber.Wheel', () => {
4747 keyCode : KeyCode . SHIFT ,
4848 shiftKey : true ,
4949 } ) ;
50- fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : 1 } ) ;
50+ fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : 100 } ) ;
5151 expect ( onChange ) . toHaveBeenCalledWith ( 1.1 ) ;
5252 } ) ;
5353
@@ -56,16 +56,16 @@ describe('InputNumber.Wheel', () => {
5656 const { container, rerender } = render ( < InputNumber onChange = { onChange } /> ) ;
5757 fireEvent . focus ( container . firstChild ) ;
5858
59- fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : - 1 } ) ;
59+ fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : - 100 } ) ;
6060 expect ( onChange ) . not . toHaveBeenCalled ( ) ;
6161
62- fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : 1 } ) ;
62+ fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : 100 } ) ;
6363 expect ( onChange ) . not . toHaveBeenCalled ( ) ;
6464
6565 rerender ( < InputNumber onChange = { onChange } changeOnWheel /> ) ;
6666 fireEvent . focus ( container . firstChild ) ;
6767
68- fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : 1 } ) ;
68+ fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : 100 } ) ;
6969 expect ( onChange ) . toHaveBeenCalledWith ( - 1 ) ;
7070 } ) ;
7171
@@ -81,9 +81,88 @@ describe('InputNumber.Wheel', () => {
8181 keyCode : KeyCode . SHIFT ,
8282 shiftKey : true ,
8383 } ) ;
84- fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : - 1 } ) ;
84+ fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : - 100 } ) ;
8585 expect ( onChange ) . toHaveBeenCalledWith ( 3 ) ;
86- fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : 1 } ) ;
86+ fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : 100 } ) ;
8787 expect ( onChange ) . toHaveBeenCalledWith ( - 3 ) ;
8888 } ) ;
89+
90+ it ( 'accumulates high precision wheel delta' , ( ) => {
91+ const onChange = jest . fn ( ) ;
92+ const { container } = render ( < InputNumber onChange = { onChange } changeOnWheel /> ) ;
93+ const input = container . querySelector ( 'input' ) ;
94+
95+ fireEvent . focus ( container . firstChild ) ;
96+
97+ for ( let i = 0 ; i < 19 ; i += 1 ) {
98+ fireEvent . wheel ( input , { deltaY : - 5 } ) ;
99+ }
100+ expect ( onChange ) . not . toHaveBeenCalled ( ) ;
101+
102+ fireEvent . wheel ( input , { deltaY : - 5 } ) ;
103+ expect ( onChange ) . toHaveBeenCalledTimes ( 1 ) ;
104+ expect ( onChange ) . toHaveBeenCalledWith ( 1 ) ;
105+ } ) ;
106+
107+ it ( 'preserves remaining wheel delta after stepping' , ( ) => {
108+ const onChange = jest . fn ( ) ;
109+ const { container } = render ( < InputNumber onChange = { onChange } changeOnWheel /> ) ;
110+ const input = container . querySelector ( 'input' ) ;
111+
112+ fireEvent . focus ( container . firstChild ) ;
113+ fireEvent . wheel ( input , { deltaY : - 130 } ) ;
114+ expect ( onChange ) . toHaveBeenCalledTimes ( 1 ) ;
115+ expect ( onChange ) . toHaveBeenLastCalledWith ( 1 ) ;
116+
117+ fireEvent . wheel ( input , { deltaY : - 69 } ) ;
118+ expect ( onChange ) . toHaveBeenCalledTimes ( 1 ) ;
119+
120+ fireEvent . wheel ( input , { deltaY : - 1 } ) ;
121+ expect ( onChange ) . toHaveBeenCalledTimes ( 2 ) ;
122+ expect ( onChange ) . toHaveBeenLastCalledWith ( 2 ) ;
123+ } ) ;
124+
125+ it ( 'supports line mode wheel delta' , ( ) => {
126+ const onChange = jest . fn ( ) ;
127+ const { container } = render ( < InputNumber onChange = { onChange } changeOnWheel /> ) ;
128+
129+ fireEvent . focus ( container . firstChild ) ;
130+ fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaMode : 1 , deltaY : - 3 } ) ;
131+
132+ expect ( onChange ) . toHaveBeenCalledWith ( 1 ) ;
133+ } ) ;
134+
135+ it ( 'supports page mode wheel delta' , ( ) => {
136+ const onChange = jest . fn ( ) ;
137+ const { container } = render ( < InputNumber onChange = { onChange } changeOnWheel /> ) ;
138+
139+ fireEvent . focus ( container . firstChild ) ;
140+ fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaMode : 2 , deltaY : - 1 } ) ;
141+
142+ expect ( onChange ) . toHaveBeenCalledWith ( 1 ) ;
143+ } ) ;
144+
145+ it ( 'ignores empty wheel delta' , ( ) => {
146+ const onChange = jest . fn ( ) ;
147+ const { container } = render ( < InputNumber onChange = { onChange } changeOnWheel /> ) ;
148+
149+ fireEvent . focus ( container . firstChild ) ;
150+ fireEvent . wheel ( container . querySelector ( 'input' ) , { deltaY : 0 } ) ;
151+
152+ expect ( onChange ) . not . toHaveBeenCalled ( ) ;
153+ } ) ;
154+
155+ it ( 'resets accumulated wheel delta when direction changes' , ( ) => {
156+ const onChange = jest . fn ( ) ;
157+ const { container } = render ( < InputNumber onChange = { onChange } changeOnWheel /> ) ;
158+ const input = container . querySelector ( 'input' ) ;
159+
160+ fireEvent . focus ( container . firstChild ) ;
161+ fireEvent . wheel ( input , { deltaY : - 50 } ) ;
162+ fireEvent . wheel ( input , { deltaY : 50 } ) ;
163+ expect ( onChange ) . not . toHaveBeenCalled ( ) ;
164+
165+ fireEvent . wheel ( input , { deltaY : 50 } ) ;
166+ expect ( onChange ) . toHaveBeenCalledWith ( - 1 ) ;
167+ } ) ;
89168} ) ;
0 commit comments