mirror of
https://github.com/jquery/jquery-ui.git
synced 2025-01-07 20:34:24 +00:00
Use of _bind, maintain original tabindex value for popup
This commit is contained in:
parent
6d01873dd8
commit
7ccb0e52c4
21
ui/jquery.ui.popup.js
vendored
21
ui/jquery.ui.popup.js
vendored
@ -81,21 +81,20 @@ $.widget( "ui.popup", {
|
|||||||
|
|
||||||
if ( !this.element.is( ":ui-menu" ) ) {
|
if ( !this.element.is( ":ui-menu" ) ) {
|
||||||
//default use case, wrap tab order in popup
|
//default use case, wrap tab order in popup
|
||||||
this.element.bind( "keydown.ui-popup", function( event ) {
|
this._bind({ keydown : function( event ) {
|
||||||
if ( event.keyCode !== $.ui.keyCode.TAB ) {
|
if ( event.keyCode !== $.ui.keyCode.TAB ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
var tabbables = $( ":tabbable", this.element ),
|
||||||
var tabbables = $( ":tabbable", this ),
|
|
||||||
first = tabbables.first(),
|
first = tabbables.first(),
|
||||||
last = tabbables.last();
|
last = tabbables.last();
|
||||||
|
|
||||||
if ( event.target === last[ 0 ] && !event.shiftKey ) {
|
if ( event.target === last[ 0 ] && !event.shiftKey ) {
|
||||||
first.focus( 1 );
|
first.focus( 1 );
|
||||||
return false;
|
event.preventDefault();
|
||||||
} else if ( event.target === first[ 0 ] && event.shiftKey ) {
|
} else if ( event.target === first[ 0 ] && event.shiftKey ) {
|
||||||
last.focus( 1 );
|
last.focus( 1 );
|
||||||
return false;
|
event.preventDefault();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -174,11 +173,13 @@ $.widget( "ui.popup", {
|
|||||||
// set focus to the first tabbable element in the popup container
|
// set focus to the first tabbable element in the popup container
|
||||||
// if there are no tabbable elements, set focus on the popup itself
|
// if there are no tabbable elements, set focus on the popup itself
|
||||||
var tabbables = this.element.find( ":tabbable" );
|
var tabbables = this.element.find( ":tabbable" );
|
||||||
|
this.removeTabIndex = false;
|
||||||
if ( !tabbables.length ) {
|
if ( !tabbables.length ) {
|
||||||
if ( !this.element.is(":tabbable") ) {
|
if ( !this.element.is(":tabbable") ) {
|
||||||
this.element.attr("tabindex", "0");
|
this.element.attr("tabindex", "0");
|
||||||
|
this.removeTabIndex = true;
|
||||||
}
|
}
|
||||||
tabbables.add(this.element);
|
tabbables = tabbables.add( this.element[ 0 ] );
|
||||||
}
|
}
|
||||||
tabbables.first().focus( 1 );
|
tabbables.first().focus( 1 );
|
||||||
}
|
}
|
||||||
@ -195,8 +196,10 @@ $.widget( "ui.popup", {
|
|||||||
.attr( "aria-hidden", true )
|
.attr( "aria-hidden", true )
|
||||||
.attr( "aria-expanded", false );
|
.attr( "aria-expanded", false );
|
||||||
|
|
||||||
this.options.trigger.attr("tabindex", 0);
|
this.options.trigger.attr( "tabindex" , 0 );
|
||||||
|
if ( this.removeTabIndex ) {
|
||||||
|
this.element.removeAttr( "tabindex" );
|
||||||
|
}
|
||||||
this.isOpen = false;
|
this.isOpen = false;
|
||||||
this._trigger( "close", event );
|
this._trigger( "close", event );
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user