Core: Move labels into its own module

Ref #9647
This commit is contained in:
Alexander Schmitz 2015-07-15 18:14:26 -04:00
parent bddb7efe00
commit 2c92f10747
5 changed files with 70 additions and 39 deletions

View File

@ -2,7 +2,8 @@ define( [
"jquery",
"lib/common",
"ui/core",
"ui/form"
"ui/form",
"ui/labels"
], function( $, common ) {
module( "core - jQuery extensions" );

View File

@ -22,9 +22,9 @@
// AMD. Register as an anonymous module.
define([
"jquery",
"./core",
"./data",
"./keycode",
"./labels",
"./version",
"./widget"
], factory );

View File

@ -22,11 +22,11 @@
"jquery",
"./data",
"./disable-selection",
"./escape-selector",
"./focusable",
"./form",
"./ie",
"./keycode",
"./labels",
"./version"
], factory );
} else {
@ -113,41 +113,6 @@ $.fn.extend( {
$( this ).removeAttr( "id" );
}
} );
},
labels: function() {
var ancestor, selector, id, labels, ancestors;
// Check control.labels first
if ( this[ 0 ].labels && this[ 0 ].labels.length ) {
return this.pushStack( this[ 0 ].labels );
}
// Support: IE <= 11, FF <= 37, Android <= 2.3 only
// Above browsers do not support control.labels. Everything below is to support them
// as well as document fragments. control.labels does not work on document fragments
labels = this.eq( 0 ).parents( "label" );
// Look for the label based on the id
id = this.attr( "id" );
if ( id ) {
// We don't search against the document in case the element
// is disconnected from the DOM
ancestor = this.eq( 0 ).parents().last();
// Get a full set of top level ancestors
ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );
// Create a selector for the label based on the id
selector = "label[for='" + $.ui.escapeSelector( id ) + "']";
labels = labels.add( ancestors.find( selector ).addBack( selector ) );
}
// Return whatever we have found for labels
return this.pushStack( labels );
}
} );

62
ui/labels.js Normal file
View File

@ -0,0 +1,62 @@
/*!
* jQuery UI Labels @VERSION
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*/
//>>label: labels
//>>group: Core
//>>description: Find all the labels associated with a given input
//>>docs: http://api.jqueryui.com/labels/
( function( factory ) {
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
define( [ "jquery", "./version", "./escape-selector" ], factory );
} else {
// Browser globals
factory( jQuery );
}
} ( function( $ ) {
return $.fn.labels = function() {
var ancestor, selector, id, labels, ancestors;
// Check control.labels first
if ( this[ 0 ].labels && this[ 0 ].labels.length ) {
return this.pushStack( this[ 0 ].labels );
}
// Support: IE <= 11, FF <= 37, Android <= 2.3 only
// Above browsers do not support control.labels. Everything below is to support them
// as well as document fragments. control.labels does not work on document fragments
labels = this.eq( 0 ).parents( "label" );
// Look for the label based on the id
id = this.attr( "id" );
if ( id ) {
// We don't search against the document in case the element
// is disconnected from the DOM
ancestor = this.eq( 0 ).parents().last();
// Get a full set of top level ancestors
ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );
// Create a selector for the label based on the id
selector = "label[for='" + $.ui.escapeSelector( id ) + "']";
labels = labels.add( ancestors.find( selector ).addBack( selector ) );
}
// Return whatever we have found for labels
return this.pushStack( labels );
};
} ) );

View File

@ -26,9 +26,12 @@
"./version",
"./escape-selector",
"./menu",
"./keycode",
"./labels",
"./position",
"./version",
"./widget" ], factory );
"./widget"
], factory );
} else {
// Browser globals