Skip to content
This repository has been archived by the owner on Oct 8, 2021. It is now read-only.

Commit

Permalink
Merge 2ce29a8 into 2dd9cf4
Browse files Browse the repository at this point in the history
  • Loading branch information
Gabriel "_|Nix|_" Schulhof committed Aug 22, 2014
2 parents 2dd9cf4 + 2ce29a8 commit 687d8a7
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 11 deletions.
24 changes: 14 additions & 10 deletions js/widgets/panel.js
Expand Up @@ -233,19 +233,24 @@ $.widget( "mobile.panel", {
}
},

_handleSwipe: function( event ) {
if ( !event.isDefaultPrevented() ) {
this.close();
}
},

_bindSwipeEvents: function() {
var self = this,
area = self._modal ? self.element.add( self._modal ) : self.element;
var area = this._modal ? this.element.add( this._modal ) : this.element;

// on swipe, close the panel
if ( !!self.options.swipeClose ) {
if ( self.options.position === "left" ) {
area.on( "swipeleft.panel", function(/* e */) {
self.close();
// Close the panel on swipe if the swipe event's default is not prevented
if ( this.options.swipeClose ) {
if ( this.options.position === "left" ) {
this._on( area, {
swipeleft: "_handleSwipe"
});
} else {
area.on( "swiperight.panel", function(/* e */) {
self.close();
this._on( area, {
swiperight: "_handleSwipe"
});
}
}
Expand Down Expand Up @@ -484,7 +489,6 @@ $.widget( "mobile.panel", {

this.element
.removeClass( [ this._getPanelClasses(), o.classes.panelOpen, o.classes.animate ].join( " " ) )
.off( "swipeleft.panel swiperight.panel" )
.off( "panelbeforeopen" )
.off( "panelhide" )
.off( "keyup.panel" )
Expand Down
1 change: 1 addition & 0 deletions tests/unit/panel/index.html
Expand Up @@ -55,6 +55,7 @@
<p>Contents of a panel.</p>
</div>
<div data-nstest-role="panel" id="panel-test-dismiss">
<input id="dismiss-input"></input>
<p>Contents of a panel.</p>
</div>
<div data-nstest-role="panel" id="panel-test-destroy">
Expand Down
43 changes: 42 additions & 1 deletion tests/unit/panel/panel_core.js
Expand Up @@ -264,7 +264,48 @@

});

asyncTest( "swipe on dismissable modal closes panel", function() {
asyncTest( "swipe on dismissible panel does not close panel if the default is prevented",
function() {
var panel = $( "#panel-test-dismiss" ),
eventNs = ".swipeDoesNotClosePanel",
input = $( "#dismiss-input" ).one( "swipeleft", function( event ) {
event.preventDefault();
});

expect( 1 );

$.testHelper.detailedEventCascade([
function() {
panel.panel( "open" );
},

{
panelopen: { src: panel, event: "panelopen" + eventNs + "1" }
},

function() {
input.trigger( "swipeleft" );
},

{
panelclose: { src: panel, event: "panelclose" + eventNs + "2" }
},

function( result ) {
deepEqual( result.panelclose.timedOut, true,
"panelclose event did not happen in response to swipe on child input" );
panel.panel( "close" );
},

{
panelclose: { src: panel, event: "panelclose" + eventNs + "3" }
},

start
]);
});

asyncTest( "swipe on dismissible modal closes panel", function() {

expect( 1 );

Expand Down

0 comments on commit 687d8a7

Please sign in to comment.