aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build/tasks/build.js4
-rw-r--r--demos/position/default.html4
-rw-r--r--package.json2
-rw-r--r--tests/unit/autocomplete/autocomplete_core.js41
-rw-r--r--themes/base/jquery.ui.menu.css2
-rw-r--r--ui/jquery.ui.accordion.js1
-rw-r--r--ui/jquery.ui.autocomplete.js35
-rw-r--r--ui/jquery.ui.dialog.js1
-rw-r--r--ui/jquery.ui.menu.js1
-rw-r--r--ui/jquery.ui.slider.js1
-rw-r--r--ui/jquery.ui.sortable.js20
-rw-r--r--ui/jquery.ui.tabs.js1
12 files changed, 78 insertions, 35 deletions
diff --git a/build/tasks/build.js b/build/tasks/build.js
index 09243cfb6..ca36ff998 100644
--- a/build/tasks/build.js
+++ b/build/tasks/build.js
@@ -39,8 +39,8 @@ grunt.registerTask( "manifest", "Generate jquery.json manifest files", function(
name: "ui.effect-{plugin}",
title: "jQuery UI {Plugin} Effect",
keywords: [ "effect", "show", "hide" ],
- homepage: "http://jqueryui.com/{plugin}-effect/",
- demo: "http://jqueryui.com/{plugin}-effect/",
+ homepage: "http://jqueryui.com/effect/",
+ demo: "http://jqueryui.com/effect/",
docs: "http://api.jqueryui.com/{plugin}-effect/",
dependencies: [ "effect" ]
}
diff --git a/demos/position/default.html b/demos/position/default.html
index 8d6cca011..ad5a3d874 100644
--- a/demos/position/default.html
+++ b/demos/position/default.html
@@ -95,7 +95,7 @@
</select>
<select id="my_vertical">
<option value="top">top</option>
- <option value="middle">center</option>
+ <option value="center">center</option>
<option value="bottom">bottom</option>
</select>
</div>
@@ -108,7 +108,7 @@
</select>
<select id="at_vertical">
<option value="top">top</option>
- <option value="middle">center</option>
+ <option value="center">center</option>
<option value="bottom">bottom</option>
</select>
</div>
diff --git a/package.json b/package.json
index 4a66f0d73..c3e0a04d3 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "jquery-ui",
"title": "jQuery UI",
"description": "A curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library.",
- "version": "1.10.3pre",
+ "version": "1.11.0pre",
"homepage": "http://jqueryui.com",
"author": {
"name": "jQuery Foundation and other contributors",
diff --git a/tests/unit/autocomplete/autocomplete_core.js b/tests/unit/autocomplete/autocomplete_core.js
index 2961cb09a..774c84417 100644
--- a/tests/unit/autocomplete/autocomplete_core.js
+++ b/tests/unit/autocomplete/autocomplete_core.js
@@ -89,6 +89,30 @@ test( "allow form submit on enter when menu is not active", function() {
test( "down arrow moves focus - contenteditable", function() {
arrowsMoveFocus( "#autocomplete-contenteditable", false );
});
+
+ test( "up arrow moves cursor - input", function() {
+ arrowsNavigateElement( "#autocomplete", true, false );
+ });
+
+ test( "down arrow moves cursor - input", function() {
+ arrowsNavigateElement( "#autocomplete", false, false );
+ });
+
+ test( "up arrow moves cursor - textarea", function() {
+ arrowsNavigateElement( "#autocomplete-textarea", true, true );
+ });
+
+ test( "down arrow moves cursor - textarea", function() {
+ arrowsNavigateElement( "#autocomplete-textarea", false, true );
+ });
+
+ test( "up arrow moves cursor - contenteditable", function() {
+ arrowsNavigateElement( "#autocomplete-contenteditable", true, true );
+ });
+
+ test( "down arrow moves cursor - contenteditable", function() {
+ arrowsNavigateElement( "#autocomplete-contenteditable", false, true );
+ });
function arrowsInvokeSearch( id, isKeyUp, shouldMove ) {
expect( 1 );
@@ -120,6 +144,23 @@ test( "allow form submit on enter when menu is not active", function() {
element.autocomplete( "search" );
element.simulate( "keydown", { keyCode: ( isKeyUp ? $.ui.keyCode.UP : $.ui.keyCode.DOWN ) } );
}
+
+ function arrowsNavigateElement( id, isKeyUp, shouldMove ) {
+ expect( 1 );
+
+ var didMove = false,
+ element = $( id ).autocomplete({
+ source: [ "a" ],
+ delay: 0,
+ minLength: 0
+ });
+ element.on( "keypress", function( e ) {
+ didMove = !e.isDefaultPrevented();
+ });
+ element.simulate( "keydown", { keyCode: ( isKeyUp ? $.ui.keyCode.UP : $.ui.keyCode.DOWN ) } );
+ element.simulate( "keypress" );
+ equal( didMove, shouldMove, "respond to arrow" );
+ }
})();
asyncTest( "handle race condition", function() {
diff --git a/themes/base/jquery.ui.menu.css b/themes/base/jquery.ui.menu.css
index 3193bbf6c..8eda1e16e 100644
--- a/themes/base/jquery.ui.menu.css
+++ b/themes/base/jquery.ui.menu.css
@@ -23,6 +23,8 @@
margin: 0;
padding: 0;
width: 100%;
+ /* support: IE10, see #8844 */
+ list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
}
.ui-menu .ui-menu-divider {
margin: 5px -2px 5px -2px;
diff --git a/ui/jquery.ui.accordion.js b/ui/jquery.ui.accordion.js
index fc2b6bc57..3b515e314 100644
--- a/ui/jquery.ui.accordion.js
+++ b/ui/jquery.ui.accordion.js
@@ -169,7 +169,6 @@ $.widget( "ui.accordion", {
},
_keydown: function( event ) {
- /*jshint maxcomplexity:15*/
if ( event.altKey || event.ctrlKey ) {
return;
}
diff --git a/ui/jquery.ui.autocomplete.js b/ui/jquery.ui.autocomplete.js
index 28cfdf2fb..2f303ca6e 100644
--- a/ui/jquery.ui.autocomplete.js
+++ b/ui/jquery.ui.autocomplete.js
@@ -16,9 +16,6 @@
*/
(function( $, undefined ) {
-// used to prevent race conditions with remote data sources
-var requestIndex = 0;
-
$.widget( "ui.autocomplete", {
version: "@VERSION",
defaultElement: "<input>",
@@ -77,7 +74,6 @@ $.widget( "ui.autocomplete", {
this._on( this.element, {
keydown: function( event ) {
- /*jshint maxcomplexity:15*/
if ( this.element.prop( "readOnly" ) ) {
suppressKeyPress = true;
suppressInput = true;
@@ -142,7 +138,9 @@ $.widget( "ui.autocomplete", {
keypress: function( event ) {
if ( suppressKeyPress ) {
suppressKeyPress = false;
- event.preventDefault();
+ if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
+ event.preventDefault();
+ }
return;
}
if ( suppressKeyPressRepeat ) {
@@ -417,21 +415,24 @@ $.widget( "ui.autocomplete", {
this.source( { term: value }, this._response() );
},
- _response: function() {
- var that = this,
- index = ++requestIndex;
+ _response: (function() {
+ var requestIndex = 0;
- return function( content ) {
- if ( index === requestIndex ) {
- that.__response( content );
- }
+ return function() {
+ var index = ++requestIndex;
- that.pending--;
- if ( !that.pending ) {
- that.element.removeClass( "ui-autocomplete-loading" );
- }
+ return $.proxy(function( content ) {
+ if ( index === requestIndex ) {
+ this.__response( content );
+ }
+
+ this.pending--;
+ if ( !this.pending ) {
+ this.element.removeClass( "ui-autocomplete-loading" );
+ }
+ }, this );
};
- },
+ })(),
__response: function( content ) {
if ( content ) {
diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js
index 59a7961ed..b01907acf 100644
--- a/ui/jquery.ui.dialog.js
+++ b/ui/jquery.ui.dialog.js
@@ -556,7 +556,6 @@ $.widget( "ui.dialog", {
},
_setOption: function( key, value ) {
- /*jshint maxcomplexity:15*/
var isDraggable, isResizable,
uiDialog = this.uiDialog;
diff --git a/ui/jquery.ui.menu.js b/ui/jquery.ui.menu.js
index bdef93248..1c641ebb6 100644
--- a/ui/jquery.ui.menu.js
+++ b/ui/jquery.ui.menu.js
@@ -174,7 +174,6 @@ $.widget( "ui.menu", {
},
_keydown: function( event ) {
- /*jshint maxcomplexity:20*/
var match, prev, character, skip, regex,
preventDefault = true;
diff --git a/ui/jquery.ui.slider.js b/ui/jquery.ui.slider.js
index 88281240d..ee7b3538f 100644
--- a/ui/jquery.ui.slider.js
+++ b/ui/jquery.ui.slider.js
@@ -593,7 +593,6 @@ $.widget( "ui.slider", $.ui.mouse, {
_handleEvents: {
keydown: function( event ) {
- /*jshint maxcomplexity:25*/
var allowed, curVal, newVal, step,
index = $( event.target ).data( "ui-slider-handle-index" );
diff --git a/ui/jquery.ui.sortable.js b/ui/jquery.ui.sortable.js
index 7b145159e..c7794f06a 100644
--- a/ui/jquery.ui.sortable.js
+++ b/ui/jquery.ui.sortable.js
@@ -15,8 +15,6 @@
*/
(function( $, undefined ) {
-/*jshint loopfunc: true */
-
function isOverAxis( x, reference, size ) {
return ( x > reference ) && ( x < ( reference + size ) );
}
@@ -629,10 +627,11 @@ $.widget("ui.sortable", $.ui.mouse, {
queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]);
+ function addItems() {
+ items.push( this );
+ }
for (i = queries.length - 1; i >= 0; i--){
- queries[i][0].each(function() {
- items.push(this);
- });
+ queries[i][0].each( addItems );
}
return $(items);
@@ -1190,12 +1189,17 @@ $.widget("ui.sortable", $.ui.mouse, {
//Post events to containers
+ function delayEvent( type, instance, container ) {
+ return function( event ) {
+ container._trigger( type, event, instance._uiHash( instance ) );
+ };
+ }
for (i = this.containers.length - 1; i >= 0; i--){
- if(!noPropagation) {
- delayedTriggers.push((function(c) { return function(event) { c._trigger("deactivate", event, this._uiHash(this)); }; }).call(this, this.containers[i]));
+ if (!noPropagation) {
+ delayedTriggers.push( delayEvent( "deactivate", this, this.containers[ i ] ) );
}
if(this.containers[i].containerCache.over) {
- delayedTriggers.push((function(c) { return function(event) { c._trigger("out", event, this._uiHash(this)); }; }).call(this, this.containers[i]));
+ delayedTriggers.push( delayEvent( "out", this, this.containers[ i ] ) );
this.containers[i].containerCache.over = 0;
}
}
diff --git a/ui/jquery.ui.tabs.js b/ui/jquery.ui.tabs.js
index 918108d61..992bd41b2 100644
--- a/ui/jquery.ui.tabs.js
+++ b/ui/jquery.ui.tabs.js
@@ -150,7 +150,6 @@ $.widget( "ui.tabs", {
},
_tabKeydown: function( event ) {
- /*jshint maxcomplexity:15*/
var focusedTab = $( this.document[0].activeElement ).closest( "li" ),
selectedIndex = this.tabs.index( focusedTab ),
goingForward = true;