@@ -5,14 +5,15 @@ export function startTapClick(doc: Document) {
55 let lastTouch = - MOUSE_WAIT * 10 ;
66 let lastActivated = 0 ;
77 let cancelled = false ;
8+ let scrolling = false ;
89
910 let activatableEle : HTMLElement | undefined ;
1011 let activeDefer : any ;
1112
1213 const clearDefers = new WeakMap < HTMLElement , any > ( ) ;
1314
1415 function onBodyClick ( ev : Event ) {
15- if ( cancelled ) {
16+ if ( cancelled || scrolling ) {
1617 ev . preventDefault ( ) ;
1718 ev . stopPropagation ( ) ;
1819 }
@@ -45,6 +46,7 @@ export function startTapClick(doc: Document) {
4546
4647 function cancelActive ( ) {
4748 clearTimeout ( activeDefer ) ;
49+ activeDefer = undefined ;
4850 if ( activatableEle ) {
4951 removeActivated ( false ) ;
5052 activatableEle = undefined ;
@@ -53,14 +55,17 @@ export function startTapClick(doc: Document) {
5355 }
5456
5557 function pointerDown ( ev : any ) {
56- if ( activatableEle ) {
58+ if ( activatableEle || scrolling ) {
5759 return ;
5860 }
5961 cancelled = false ;
6062 setActivatedElement ( getActivatableTarget ( ev ) , ev ) ;
6163 }
6264
6365 function pointerUp ( ev : UIEvent ) {
66+ if ( scrolling ) {
67+ return ;
68+ }
6469 setActivatedElement ( undefined , ev ) ;
6570 if ( cancelled && ev . cancelable ) {
6671 ev . preventDefault ( ) ;
@@ -133,7 +138,13 @@ export function startTapClick(doc: Document) {
133138 }
134139
135140 doc . body . addEventListener ( 'click' , onBodyClick , true ) ;
136- doc . body . addEventListener ( 'ionScrollStart' , cancelActive ) ;
141+ doc . body . addEventListener ( 'ionScrollStart' , ( ) => {
142+ scrolling = true ;
143+ cancelActive ( ) ;
144+ } ) ;
145+ doc . body . addEventListener ( 'ionScrollEnd' , ( ) => {
146+ scrolling = false ;
147+ } ) ;
137148 doc . body . addEventListener ( 'ionGestureCaptured' , cancelActive ) ;
138149
139150 doc . addEventListener ( 'touchstart' , onTouchStart , true ) ;
0 commit comments