From 7033544cdd9792f4b1be473eeea7bc37eed52469 Mon Sep 17 00:00:00 2001 From: Scott González Date: Mon, 22 Apr 2013 12:33:35 -0400 Subject: Sortable: Don't create functions inside loops. --- ui/jquery.ui.sortable.js | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) 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; } } -- cgit v1.2.3 From fadf2b312a05040436451c64bbfaf4814bc62c56 Mon Sep 17 00:00:00 2001 From: Scott González Date: Mon, 22 Apr 2013 12:35:21 -0400 Subject: All: Remove inline JSHint settings. --- ui/jquery.ui.accordion.js | 1 - ui/jquery.ui.autocomplete.js | 1 - ui/jquery.ui.dialog.js | 1 - ui/jquery.ui.menu.js | 1 - ui/jquery.ui.slider.js | 1 - ui/jquery.ui.tabs.js | 1 - 6 files changed, 6 deletions(-) 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..e79a66a60 100644 --- a/ui/jquery.ui.autocomplete.js +++ b/ui/jquery.ui.autocomplete.js @@ -77,7 +77,6 @@ $.widget( "ui.autocomplete", { this._on( this.element, { keydown: function( event ) { - /*jshint maxcomplexity:15*/ if ( this.element.prop( "readOnly" ) ) { suppressKeyPress = true; suppressInput = true; 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.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; -- cgit v1.2.3 From 64a39d9b0d5710729653b185eae427853608744b Mon Sep 17 00:00:00 2001 From: TJ VanToll Date: Fri, 19 Apr 2013 22:52:30 -0400 Subject: Menu: Add a transparent list-style-image to menu items. Fixed #8844 - Menu: IE 10 renders bullets in submenus --- themes/base/jquery.ui.menu.css | 2 ++ 1 file changed, 2 insertions(+) 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; -- cgit v1.2.3 From 947d738c0b9403da527b31ad2af3b6b9150383bd Mon Sep 17 00:00:00 2001 From: Scott González Date: Thu, 25 Apr 2013 10:59:20 -0400 Subject: Autocomplete: Refactored _response() so that requestIndex is defined closer to where it's used. --- ui/jquery.ui.autocomplete.js | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/ui/jquery.ui.autocomplete.js b/ui/jquery.ui.autocomplete.js index e79a66a60..5e798d55d 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: "", @@ -416,21 +413,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 ) { -- cgit v1.2.3 From cc378433ab776dee8b75c4ece7df92bfe1300aaf Mon Sep 17 00:00:00 2001 From: Scott González Date: Thu, 25 Apr 2013 12:58:53 -0400 Subject: Position demo: Fixed usage of center positioning. --- demos/position/default.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 @@ @@ -108,7 +108,7 @@ -- cgit v1.2.3 From f5f08791536e689e008b04d6ea9677811353d456 Mon Sep 17 00:00:00 2001 From: Jason Moon Date: Wed, 20 Mar 2013 17:42:34 -0500 Subject: Autocomplete: Don't prevent keypress for multiline. Fixed #8911 - Autocomplete: Unable to use up/down arrow keys in a textarea (Firefox). --- tests/unit/autocomplete/autocomplete_core.js | 41 ++++++++++++++++++++++++++++ ui/jquery.ui.autocomplete.js | 4 ++- 2 files changed, 44 insertions(+), 1 deletion(-) 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/ui/jquery.ui.autocomplete.js b/ui/jquery.ui.autocomplete.js index 5e798d55d..2f303ca6e 100644 --- a/ui/jquery.ui.autocomplete.js +++ b/ui/jquery.ui.autocomplete.js @@ -138,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 ) { -- cgit v1.2.3 From 45f85cce5634e2321e701e905297b578987d3083 Mon Sep 17 00:00:00 2001 From: Jörn Zaefferer Date: Fri, 26 Apr 2013 18:09:00 +0200 Subject: Build: Change the homepage and demo URLs to the main effects page. Fixes #9247 - Build: Incorrect links in effect manifests --- build/tasks/build.js | 4 ++-- 1 file changed, 2 insertions(+), 2 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" ] } -- cgit v1.2.3 From 5c0a6aaeb7fac32950ddc44870295d5983ece15d Mon Sep 17 00:00:00 2001 From: Jörn Zaefferer Date: Fri, 26 Apr 2013 18:10:47 +0200 Subject: Build: Fix version in package.json, oversight when branching 1-10-stable --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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", -- cgit v1.2.3