Permalink
Please
sign in to comment.
Showing
with
69 additions
and 35 deletions.
- +2 −1 tests/unit/core/selector.js
- +2 −34 ui/core.js
- +1 −0 ui/dialog.js
- +64 −0 ui/focusable.js
@@ -0,0 +1,64 @@ | ||
/*! | ||
* jQuery UI Focusable @VERSION | ||
* http://jqueryui.com | ||
* | ||
* Copyright jQuery Foundation and other contributors | ||
* Released under the MIT license. | ||
* http://jquery.org/license | ||
*/ | ||
|
||
//>>label: focusable | ||
//>>group: Core | ||
//>>description: Selects elements which can be focused. | ||
//>>docs: http://api.jqueryui.com/focusable-selector/ | ||
|
||
( function( factory ) { | ||
if ( typeof define === "function" && define.amd ) { | ||
|
||
// AMD. Register as an anonymous module. | ||
define( [ "jquery", "./version" ], factory ); | ||
} else { | ||
|
||
// Browser globals | ||
factory( jQuery ); | ||
} | ||
} ( function( $ ) { | ||
|
||
// selectors | ||
$.ui.focusable = function( element, hasTabindex ) { | ||
var map, mapName, img, | ||
nodeName = element.nodeName.toLowerCase(); | ||
if ( "area" === nodeName ) { | ||
map = element.parentNode; | ||
mapName = map.name; | ||
if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { | ||
return false; | ||
} | ||
img = $( "img[usemap='#" + mapName + "']" )[ 0 ]; | ||
return !!img && visible( img ); | ||
} | ||
return ( /^(input|select|textarea|button|object)$/.test( nodeName ) ? | ||
!element.disabled : | ||
"a" === nodeName ? | ||
element.href || hasTabindex : | ||
hasTabindex ) && | ||
// the element and all of its ancestors must be visible | ||
visible( element ); | ||
}; | ||
|
||
function visible( element ) { | ||
return $.expr.filters.visible( element ) && | ||
!$( element ).parents().addBack().filter( function() { | ||
return $.css( this, "visibility" ) === "hidden"; | ||
} ).length; | ||
} | ||
|
||
$.extend( $.expr[ ":" ], { | ||
focusable: function( element ) { | ||
return $.ui.focusable( element, $.attr( element, "tabindex" ) != null ); | ||
} | ||
} ); | ||
|
||
return $.ui.focusable; | ||
|
||
} ) ); |
0 comments on commit
475ccef