File tree Expand file tree Collapse file tree 3 files changed +54
-15
lines changed Expand file tree Collapse file tree 3 files changed +54
-15
lines changed Original file line number Diff line number Diff line change @@ -233,21 +233,19 @@ $.widget( "mobile.panel", {
233
233
}
234
234
} ,
235
235
236
+ _handleSwipe : function ( event ) {
237
+ if ( ! event . isDefaultPrevented ( ) ) {
238
+ this . close ( ) ;
239
+ }
240
+ } ,
241
+
236
242
_bindSwipeEvents : function ( ) {
237
- var self = this ,
238
- area = self . _modal ? self . element . add ( self . _modal ) : self . element ;
243
+ var handler = { } ;
239
244
240
- // on swipe, close the panel
241
- if ( ! ! self . options . swipeClose ) {
242
- if ( self . options . position === "left" ) {
243
- area . on ( "swipeleft.panel" , function ( /* e */ ) {
244
- self . close ( ) ;
245
- } ) ;
246
- } else {
247
- area . on ( "swiperight.panel" , function ( /* e */ ) {
248
- self . close ( ) ;
249
- } ) ;
250
- }
245
+ // Close the panel on swipe if the swipe event's default is not prevented
246
+ if ( this . options . swipeClose ) {
247
+ handler [ "swipe" + this . options . position ] = "_handleSwipe" ;
248
+ this . _on ( ( this . _modal ? this . element . add ( this . _modal ) : this . element ) , handler ) ;
251
249
}
252
250
} ,
253
251
@@ -487,7 +485,6 @@ $.widget( "mobile.panel", {
487
485
488
486
this . element
489
487
. removeClass ( [ this . _getPanelClasses ( ) , o . classes . panelOpen , o . classes . animate ] . join ( " " ) )
490
- . off ( "swipeleft.panel swiperight.panel" )
491
488
. off ( "panelbeforeopen" )
492
489
. off ( "panelhide" )
493
490
. off ( "keyup.panel" )
Original file line number Diff line number Diff line change 55
55
< p > Contents of a panel.</ p >
56
56
</ div >
57
57
< div data-nstest-role ="panel " id ="panel-test-dismiss ">
58
+ < input id ="dismiss-input "> </ input >
58
59
< p > Contents of a panel.</ p >
59
60
</ div >
60
61
< div data-nstest-role ="panel " id ="panel-test-destroy ">
Original file line number Diff line number Diff line change 264
264
265
265
} ) ;
266
266
267
- asyncTest ( "swipe on dismissable modal closes panel" , function ( ) {
267
+ asyncTest ( "swipe on dismissible panel does not close panel if the default is prevented" ,
268
+ function ( ) {
269
+ var panel = $ ( "#panel-test-dismiss" ) ,
270
+ eventNs = ".swipeDoesNotClosePanel" ,
271
+ input = $ ( "#dismiss-input" ) . one ( "swipeleft" , function ( event ) {
272
+ event . preventDefault ( ) ;
273
+ } ) ;
274
+
275
+ expect ( 1 ) ;
276
+
277
+ $ . testHelper . detailedEventCascade ( [
278
+ function ( ) {
279
+ panel . panel ( "open" ) ;
280
+ } ,
281
+
282
+ {
283
+ panelopen : { src : panel , event : "panelopen" + eventNs + "1" }
284
+ } ,
285
+
286
+ function ( ) {
287
+ input . trigger ( "swipeleft" ) ;
288
+ } ,
289
+
290
+ {
291
+ panelclose : { src : panel , event : "panelclose" + eventNs + "2" }
292
+ } ,
293
+
294
+ function ( result ) {
295
+ deepEqual ( result . panelclose . timedOut , true ,
296
+ "panelclose event did not happen in response to swipe on child input" ) ;
297
+ panel . panel ( "close" ) ;
298
+ } ,
299
+
300
+ {
301
+ panelclose : { src : panel , event : "panelclose" + eventNs + "3" }
302
+ } ,
303
+
304
+ start
305
+ ] ) ;
306
+ } ) ;
307
+
308
+ asyncTest ( "swipe on dismissible modal closes panel" , function ( ) {
268
309
269
310
expect ( 1 ) ;
270
311
You can’t perform that action at this time.
0 commit comments