@@ -9,6 +9,7 @@ import { MenuController } from './menu-controller';
9
9
import { MenuType } from './menu-types' ;
10
10
import { Platform } from '../../platform/platform' ;
11
11
import { GestureController } from '../../gestures/gesture-controller' ;
12
+ import { UIEventManager } from '../../util/ui-event-manager' ;
12
13
13
14
14
15
/**
@@ -178,7 +179,7 @@ import { GestureController } from '../../gestures/gesture-controller';
178
179
selector : 'ion-menu' ,
179
180
template :
180
181
'<div class="menu-inner"><ng-content></ng-content></div>' +
181
- '<ion-backdrop (click)="bdClick($event)" disableScroll="false"></ion-backdrop>' ,
182
+ '<ion-backdrop disableScroll="false"></ion-backdrop>' ,
182
183
host : {
183
184
'role' : 'navigation'
184
185
} ,
@@ -195,7 +196,7 @@ export class Menu {
195
196
private _isAnimating : boolean = false ;
196
197
private _isPers : boolean = false ;
197
198
private _init : boolean = false ;
198
-
199
+ private _events : UIEventManager = new UIEventManager ( ) ;
199
200
200
201
/**
201
202
* @private
@@ -207,11 +208,6 @@ export class Menu {
207
208
*/
208
209
@ViewChild ( Backdrop ) backdrop : Backdrop ;
209
210
210
- /**
211
- * @private
212
- */
213
- onContentClick : EventListener ;
214
-
215
211
/**
216
212
* @input {any} A reference to the content element the menu should use.
217
213
*/
@@ -349,15 +345,6 @@ export class Menu {
349
345
}
350
346
self . _setListeners ( ) ;
351
347
352
- // create a reusable click handler on this instance, but don't assign yet
353
- self . onContentClick = function ( ev : UIEvent ) {
354
- if ( self . _isEnabled ) {
355
- ev . preventDefault ( ) ;
356
- ev . stopPropagation ( ) ;
357
- self . close ( ) ;
358
- }
359
- } ;
360
-
361
348
self . _cntEle . classList . add ( 'menu-content' ) ;
362
349
self . _cntEle . classList . add ( 'menu-content-' + self . type ) ;
363
350
@@ -368,11 +355,11 @@ export class Menu {
368
355
/**
369
356
* @private
370
357
*/
371
- bdClick ( ev : Event ) {
372
- console . debug ( 'backdrop clicked' ) ;
358
+ onBackdropClick ( ev : UIEvent ) : boolean {
373
359
ev . preventDefault ( ) ;
374
360
ev . stopPropagation ( ) ;
375
361
this . _menuCtrl . close ( ) ;
362
+ return false ;
376
363
}
377
364
378
365
/**
@@ -502,10 +489,18 @@ export class Menu {
502
489
503
490
( < any > this . _cntEle . classList ) [ isOpen ? 'add' : 'remove' ] ( 'menu-content-open' ) ;
504
491
505
- this . _cntEle . removeEventListener ( 'click' , this . onContentClick ) ;
492
+ this . _events . unlistenAll ( ) ;
506
493
507
494
if ( isOpen ) {
508
- this . _cntEle . addEventListener ( 'click' , this . onContentClick ) ;
495
+ let callback = this . onBackdropClick . bind ( this ) ;
496
+ this . _events . pointerEvents ( {
497
+ element : this . _cntEle ,
498
+ pointerDown : callback
499
+ } ) ;
500
+ this . _events . pointerEvents ( {
501
+ element : this . backdrop . getNativeElement ( ) ,
502
+ pointerDown : callback
503
+ } ) ;
509
504
this . ionOpen . emit ( true ) ;
510
505
511
506
} else {
@@ -612,6 +607,7 @@ export class Menu {
612
607
*/
613
608
ngOnDestroy ( ) {
614
609
this . _menuCtrl . unregister ( this ) ;
610
+ this . _events . unlistenAll ( ) ;
615
611
this . _cntGesture && this . _cntGesture . destroy ( ) ;
616
612
this . _type && this . _type . destroy ( ) ;
617
613
this . _resizeUnreg && this . _resizeUnreg ( ) ;
0 commit comments