corrade-http-templates – Rev 42

Subversion Repositories:
Rev:
/*!
 * jQuery UI Focusable 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: :focusable Selector
//>>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, focusableIfVisible, fieldset,
                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 + "']" );
                return img.length > 0 && img.is( ":visible" );
        }

        if ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) {
                focusableIfVisible = !element.disabled;

                if ( focusableIfVisible ) {

                        // Form controls within a disabled fieldset are disabled.
                        // However, controls within the fieldset's legend do not get disabled.
                        // Since controls generally aren't placed inside legends, we skip
                        // this portion of the check.
                        fieldset = $( element ).closest( "fieldset" )[ 0 ];
                        if ( fieldset ) {
                                focusableIfVisible = !fieldset.disabled;
                        }
                }
        } else if ( "a" === nodeName ) {
                focusableIfVisible = element.href || hasTabindex;
        } else {
                focusableIfVisible = hasTabindex;
        }

        return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) );
};

// Support: IE 8 only
// IE 8 doesn't resolve inherit to visible/hidden for computed values
function visible( element ) {
        var visibility = element.css( "visibility" );
        while ( visibility === "inherit" ) {
                element = element.parent();
                visibility = element.css( "visibility" );
        }
        return visibility !== "hidden";
}

$.extend( $.expr[ ":" ], {
        focusable: function( element ) {
                return $.ui.focusable( element, $.attr( element, "tabindex" ) != null );
        }
} );

return $.ui.focusable;

} ) );