mirror of
https://github.com/Hopiu/jquery-mobile.git
synced 2026-04-20 14:20:59 +00:00
abstracted out some of the page hide behavior to fix issues with the close button not returning focus to the button after closing. Also fixes an issue where a full page custom menu would open as a misplaced small custom menu the second time it opens (if the menu was closed via the custom close button). Fixes #1618. Fixes #1692. Fixes #1750.
This commit is contained in:
parent
2de817d24c
commit
ada46734ec
1 changed files with 15 additions and 13 deletions
|
|
@ -305,6 +305,13 @@ $.widget( "mobile.selectmenu", $.mobile.widget, {
|
|||
break;
|
||||
}
|
||||
});
|
||||
|
||||
// button refocus ensures proper height calculation
|
||||
// by removing the inline style and ensuring page inclusion
|
||||
self.menuPage.bind( "pagehide", function(){
|
||||
self.list.appendTo( self.listbox );
|
||||
self._focusButton();
|
||||
});
|
||||
|
||||
// Events on "screen" overlay
|
||||
screen.bind( "vclick", function( event ) {
|
||||
|
|
@ -551,6 +558,13 @@ $.widget( "mobile.selectmenu", $.mobile.widget, {
|
|||
self.isOpen = true;
|
||||
}
|
||||
},
|
||||
|
||||
_focusButton : function(){
|
||||
var self = this;
|
||||
setTimeout(function() {
|
||||
self.button.focus();
|
||||
}, 40);
|
||||
},
|
||||
|
||||
close: function() {
|
||||
if ( this.options.disabled || !this.isOpen || this.options.nativeMenu ) {
|
||||
|
|
@ -559,19 +573,7 @@ $.widget( "mobile.selectmenu", $.mobile.widget, {
|
|||
|
||||
var self = this;
|
||||
|
||||
function focusButton() {
|
||||
setTimeout(function() {
|
||||
self.button.focus();
|
||||
}, 40);
|
||||
|
||||
self.listbox.removeAttr( "style" ).append( self.list );
|
||||
}
|
||||
|
||||
if ( self.menuType == "page" ) {
|
||||
// button refocus ensures proper height calculation
|
||||
// by removing the inline style and ensuring page inclusion
|
||||
self.menuPage.one( "pagehide", focusButton);
|
||||
|
||||
// doesn't solve the possible issue with calling change page
|
||||
// where the objects don't define data urls which prevents dialog key
|
||||
// stripping - changePage has incoming refactor
|
||||
|
|
@ -580,7 +582,7 @@ $.widget( "mobile.selectmenu", $.mobile.widget, {
|
|||
else{
|
||||
self.screen.addClass( "ui-screen-hidden" );
|
||||
self.listbox.addClass( "ui-selectmenu-hidden" ).removeAttr( "style" ).removeClass( "in" );
|
||||
focusButton();
|
||||
self._focusButton();
|
||||
}
|
||||
|
||||
// allow the dialog to be closed again
|
||||
|
|
|
|||
Loading…
Reference in a new issue