diff --git a/AUTHORS.txt b/AUTHORS.txt index 637175b76..b2168655e 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -1,8 +1,8 @@ -jQuery UI Authors (http://ui.jquery.com/about) +jQuery UI Authors (http://jqueryui.com/about) This software consists of voluntary contributions made by many individuals. For exact contribution history, see the revision history -and logs, available at http://jquery-ui.googlecode.com/svn/ +and logs, available at http://github.com/jquery/jquery-ui Brandon Aaron Paul Bakaus (paulbakaus.com) diff --git a/demos/autocomplete/combobox.html b/demos/autocomplete/combobox.html index e5dc6c92b..4c6b656a1 100644 --- a/demos/autocomplete/combobox.html +++ b/demos/autocomplete/combobox.html @@ -33,7 +33,7 @@ if (!request.term || matcher.test(text)) return { id: $(this).val(), - label: text.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + request.term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "$1"), + label: text.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + $.ui.autocomplete.escapeRegex(request.term) + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "$1"), value: text }; })); diff --git a/demos/autocomplete/remote.html b/demos/autocomplete/remote.html index 3b0d7096d..9414102e6 100644 --- a/demos/autocomplete/remote.html +++ b/demos/autocomplete/remote.html @@ -18,7 +18,6 @@ } $("#birds").autocomplete({ - // TODO doesn't work when loaded from /demos/#autocomplete|remote source: "search.php", minLength: 2, select: function(event, ui) { diff --git a/external/qunit.js b/external/qunit.js index f2704148e..41e6c82f5 100644 --- a/external/qunit.js +++ b/external/qunit.js @@ -18,6 +18,7 @@ var QUnit = { stats: { all: 0, bad: 0 }, moduleStats: { all: 0, bad: 0 }, started: +new Date, + updateRate: 1000, blocking: false, autorun: false, assertions: [], @@ -590,8 +591,16 @@ function synchronize( callback ) { } function process() { + var start = (new Date()).getTime(); + while ( config.queue.length && !config.blocking ) { - config.queue.shift()(); + if ( config.updateRate <= 0 || (((new Date()).getTime() - start) < config.updateRate) ) { + config.queue.shift()(); + + } else { + setTimeout( process, 13 ); + break; + } } } @@ -679,6 +688,7 @@ QUnit.equiv = function () { var innerEquiv; // the real equiv function var callers = []; // stack to decide between skip/abort functions + var parents = []; // stack to avoiding loops from circular referencing // Determine what is o. @@ -788,28 +798,39 @@ QUnit.equiv = function () { }, "array": function (b, a) { - var i; + var i, j, loop; var len; // b could be an object literal here if ( ! (hoozit(b) === "array")) { return false; - } - + } + len = a.length; if (len !== b.length) { // safe and faster return false; } + + //track reference to avoid circular references + parents.push(a); for (i = 0; i < len; i++) { - if ( ! innerEquiv(a[i], b[i])) { + loop = false; + for(j=0;j + diff --git a/tests/unit/testsuite.js b/tests/unit/testsuite.js index 67b980d18..9a16e9d0c 100644 --- a/tests/unit/testsuite.js +++ b/tests/unit/testsuite.js @@ -45,5 +45,5 @@ function commonWidgetTests(widget, settings) { if ( !url || url.indexOf("http") !== 0 ) { return; } - document.write(""); + document.write(""); })(); diff --git a/tests/visual/menu/drilldown.html b/tests/visual/menu/drilldown.html index 78b8cf9f2..a97d8322c 100644 --- a/tests/visual/menu/drilldown.html +++ b/tests/visual/menu/drilldown.html @@ -14,7 +14,7 @@ $.widget("ui.drilldown", { _init: function() { var self = this; - this.active = this.element; + this.active = this.element.find(">ul").attr("tabindex", 0); // hide submenus and create indicator icons this.element.find("ul").hide().prev("a").prepend('').end().filter(":first").show(); @@ -84,17 +84,21 @@ parent.parent().removeData("submenu"); submenu = submenu.data("submenu"); }; + }, + + widget: function() { + return this.element.find(">ul"); } }); - var nestedmenu = $("#drilldown").drilldown({ + var drilldown = $("#drilldown").drilldown({ selected: function(event, ui) { $("#log").append("
Selected " + ui.item.text() + "
"); } }); - $().keydown(function(event) { - var menu = nestedmenu.data("drilldown").active.data("menu"); + drilldown.drilldown("widget").keydown(function(event) { + var menu = drilldown.data("drilldown").active.data("menu"); if (menu.widget().is(":hidden")) return; event.stopPropagation(); @@ -109,10 +113,10 @@ menu.previous(); break; case $.ui.keyCode.LEFT: - nestedmenu.nestedmenu("up"); + drilldown.drilldown("up"); break; case $.ui.keyCode.RIGHT: - nestedmenu.nestedmenu("down"); + drilldown.drilldown("down"); break; case $.ui.keyCode.DOWN: menu.next(); @@ -121,11 +125,11 @@ case $.ui.keyCode.ENTER: case $.ui.keyCode.TAB: menu.select(); - nestedmenu.nestedmenu("hide"); + drilldown.drilldown("hide"); event.preventDefault(); break; case $.ui.keyCode.ESCAPE: - nestedmenu.nestedmenu("hide"); + drilldown.drilldown("hide"); break; default: clearTimeout(menu.filterTimer); diff --git a/tests/visual/menu/drilldown2.html b/tests/visual/menu/drilldown2.html new file mode 100644 index 000000000..0c18c3679 --- /dev/null +++ b/tests/visual/menu/drilldown2.html @@ -0,0 +1,235 @@ + + + + Menu Visual Test: Default + + + + + + + + + + + + + +
+

Make a selection...

+ + Go back +
+ +
+ Log: +
+
+ + + diff --git a/tests/visual/menu/nested.html b/tests/visual/menu/nested.html index a332e2440..96a0379d3 100644 --- a/tests/visual/menu/nested.html +++ b/tests/visual/menu/nested.html @@ -106,11 +106,16 @@ $("button").click(function(event) { // TODO required to prevent the click handler below from handling this event event.stopPropagation(); - nestedmenu.nestedmenu("show").position({ - my: "left top", - at: "right top", - of: event.pageX > 0 ? event : this - }); + nestedmenu.nestedmenu("show") + .css({ + top: 0, + left: 0 + }) + .position({ + my: "left top", + at: "right top", + of: this + }); $(document).one("click", function() { nestedmenu.nestedmenu("hide"); }) diff --git a/tests/visual/menu/nested2.html b/tests/visual/menu/nested2.html new file mode 100644 index 000000000..063b946c7 --- /dev/null +++ b/tests/visual/menu/nested2.html @@ -0,0 +1,236 @@ + + + + Menu Visual Test: Default + + + + + + + + + + + + + + + +
+ + + + +
+ Log: +
+
+ + + diff --git a/themes/base/jquery.ui.autocomplete.css b/themes/base/jquery.ui.autocomplete.css index bdd41e1b7..9c9ca7584 100644 --- a/themes/base/jquery.ui.autocomplete.css +++ b/themes/base/jquery.ui.autocomplete.css @@ -20,6 +20,9 @@ .ui-menu .ui-menu-item { margin:0; padding: 0; + zoom: 1; + float: left; + clear: left; width: 100%; } .ui-menu .ui-menu-item a { diff --git a/ui/jquery.ui.autocomplete.js b/ui/jquery.ui.autocomplete.js index fab7a6287..a1d798c59 100644 --- a/ui/jquery.ui.autocomplete.js +++ b/ui/jquery.ui.autocomplete.js @@ -70,7 +70,7 @@ $.widget( "ui.autocomplete", { case keyCode.RIGHT: case keyCode.SHIFT: case keyCode.CONTROL: - case 18: + case keyCode.ALT: // ignore metakeys (shift, ctrl, alt) break; default: @@ -140,7 +140,7 @@ $.widget( "ui.autocomplete", { destroy: function() { this.element - .removeClass( "ui-autocomplete-input ui-widget ui-widget-content" ) + .removeClass( "ui-autocomplete-input" ) .removeAttr( "autocomplete" ) .removeAttr( "role" ) .removeAttr( "aria-autocomplete" ) @@ -335,7 +335,7 @@ $.widget("ui.menu", { "aria-activedescendant": "ui-active-menuitem" }) .click(function( event ) { - if ( !$( event.target ).closest( ".ui-menu-item" ).length ) { + if ( !$( event.target ).closest( ".ui-menu-item a" ).length ) { return; } // temporary diff --git a/ui/jquery.ui.core.js b/ui/jquery.ui.core.js index e0e1727ee..197a1aba9 100644 --- a/ui/jquery.ui.core.js +++ b/ui/jquery.ui.core.js @@ -70,6 +70,7 @@ $.ui = { }, keyCode: { + ALT: 18, BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js index 0291c3da0..6e538b6e5 100644 --- a/ui/jquery.ui.dialog.js +++ b/ui/jquery.ui.dialog.js @@ -622,8 +622,11 @@ $.widget("ui.dialog", { // reset content sizing // hide for non content measurement because height: 0 doesn't work in IE quirks mode (see #4350) - this.element.css('width', 'auto') - .hide(); + this.element.css({ + width: 'auto', + minHeight: 0, + height: 0 + }); // reset wrapper sizing // determine the height of all the non-content elements