diff options
-rw-r--r-- | build/build.xml | 6 | ||||
-rw-r--r-- | tests/unit/autocomplete/autocomplete_core.js | 86 | ||||
-rw-r--r-- | tests/unit/dialog/dialog_options.js | 13 | ||||
-rw-r--r-- | tests/unit/selectmenu/selectmenu_events.js | 6 | ||||
-rw-r--r-- | tests/unit/selectmenu/selectmenu_options.js | 23 | ||||
-rw-r--r-- | tests/visual/selectmenu/autocomplete.html | 94 | ||||
-rw-r--r-- | tests/visual/selectmenu/compatibility .html (renamed from tests/visual/selectmenu/tabs.html) | 59 | ||||
-rw-r--r-- | tests/visual/selectmenu/dialog.html | 72 | ||||
-rw-r--r-- | tests/visual/selectmenu/events.html | 2 | ||||
-rw-r--r-- | tests/visual/selectmenu/methods.html | 2 | ||||
-rw-r--r-- | tests/visual/selectmenu/option.html | 2 | ||||
-rw-r--r-- | tests/visual/selectmenu/themeswitcher.html | 104 | ||||
-rw-r--r-- | themes/base/jquery.ui.button.css | 2 | ||||
-rw-r--r-- | themes/base/jquery.ui.dialog.css | 2 | ||||
-rw-r--r-- | ui/jquery.ui.autocomplete.js | 26 | ||||
-rw-r--r-- | ui/jquery.ui.dialog.js | 2 | ||||
-rw-r--r-- | ui/jquery.ui.menu.js | 20 |
17 files changed, 310 insertions, 211 deletions
diff --git a/build/build.xml b/build/build.xml index 49568b3cc..ddaa5b86d 100644 --- a/build/build.xml +++ b/build/build.xml @@ -123,6 +123,12 @@ <mapper type="glob" from="*.js" to="${min.dir}/*.min.js" /> <targetfile/> </apply> + <apply executable="build/minify-js.sh"> + <fileset dir="${dist.dir}/ui/i18n" includes="**.js" /> + <srcfile /> + <mapper type="glob" from="*.js" to="${min.dir}/i18n/*.min.js" /> + <targetfile/> + </apply> <apply executable="java" parallel="false"> <fileset dir="${dist.dir}/themes/base" includes="*.css" /> <arg line="-jar" /> diff --git a/tests/unit/autocomplete/autocomplete_core.js b/tests/unit/autocomplete/autocomplete_core.js index 3f92aa01f..d98f56abf 100644 --- a/tests/unit/autocomplete/autocomplete_core.js +++ b/tests/unit/autocomplete/autocomplete_core.js @@ -80,4 +80,90 @@ test( "allow form submit on enter when menu is not active", function() { ok( !event.isDefaultPrevented(), "default action is prevented" ); }); +(function() { + test( "up arrow invokes search - input", function() { + arrowsInvokeSearch( "#autocomplete", true, true ); + }); + + test( "down arrow invokes search - input", function() { + arrowsInvokeSearch( "#autocomplete", false, true ); + }); + + test( "up arrow invokes search - textarea", function() { + arrowsInvokeSearch( "#autocomplete-textarea", true, false ); + }); + + test( "down arrow invokes search - textarea", function() { + arrowsInvokeSearch( "#autocomplete-textarea", false, false ); + }); + + test( "up arrow invokes search - contenteditable", function() { + arrowsInvokeSearch( "#autocomplete-contenteditable", true, false ); + }); + + test( "down arrow invokes search - contenteditable", function() { + arrowsInvokeSearch( "#autocomplete-contenteditable", false, false ); + }); + + test( "up arrow moves focus - input", function() { + arrowsMoveFocus( "#autocomplete", true ); + }); + + test( "down arrow moves focus - input", function() { + arrowsMoveFocus( "#autocomplete", false ); + }); + + test( "up arrow moves focus - textarea", function() { + arrowsMoveFocus( "#autocomplete-textarea", true ); + }); + + test( "down arrow moves focus - textarea", function() { + arrowsMoveFocus( "#autocomplete-textarea", false ); + }); + + test( "up arrow moves focus - contenteditable", function() { + arrowsMoveFocus( "#autocomplete-contenteditable", true ); + }); + + test( "down arrow moves focus - contenteditable", function() { + arrowsMoveFocus( "#autocomplete-contenteditable", false ); + }); + + function arrowsInvokeSearch( id, isKeyUp, shouldMove ) { + expect( 1 ); + + var didMove = false, + element = $( id ).autocomplete({ + source: [ "a" ], + delay: 0, + minLength: 0 + }); + element.data( "autocomplete" )._move = function() { + didMove = true; + }; + element.simulate( "keydown", { keyCode: ( isKeyUp ? $.ui.keyCode.UP : $.ui.keyCode.DOWN ) } ); + equal( didMove, shouldMove, "respond to arrow" ); + } + + function arrowsMoveFocus( id, isKeyUp ) { + expect( 1 ); + + var didMove = false, + element = $( id ).autocomplete({ + source: [ "a" ], + delay: 0, + minLength: 0 + }); + element.data( "autocomplete" )._move = function() { + ok( true, "repsond to arrow" ); + }; + element.autocomplete( "search" ); + element.simulate( "keydown", { keyCode: ( isKeyUp ? $.ui.keyCode.UP : $.ui.keyCode.DOWN ) } ); + } +})(); + +(function() { + +})(); + }( jQuery ) ); diff --git a/tests/unit/dialog/dialog_options.js b/tests/unit/dialog/dialog_options.js index eab577c69..264c2fb6e 100644 --- a/tests/unit/dialog/dialog_options.js +++ b/tests/unit/dialog/dialog_options.js @@ -177,19 +177,24 @@ test("draggable", function() { }); test("height", function() { - expect(3); + expect(4); el = $('<div></div>').dialog(); - equals(dlg().height(), 150, "default height"); + equals(dlg().outerHeight(), 150, "default height"); el.remove(); el = $('<div></div>').dialog({ height: 237 }); - equals(dlg().height(), 237, "explicit height"); + equals(dlg().outerHeight(), 237, "explicit height"); el.remove(); el = $('<div></div>').dialog(); el.dialog('option', 'height', 238); - equals(dlg().height(), 238, "explicit height set after init"); + equals(dlg().outerHeight(), 238, "explicit height set after init"); + el.remove(); + + el = $('<div></div>').css("padding", "20px") + .dialog({ height: 240 }); + equals(dlg().outerHeight(), 240, "explicit height with padding"); el.remove(); }); diff --git a/tests/unit/selectmenu/selectmenu_events.js b/tests/unit/selectmenu/selectmenu_events.js index ec4d3ff25..fa25e69bb 100644 --- a/tests/unit/selectmenu/selectmenu_events.js +++ b/tests/unit/selectmenu/selectmenu_events.js @@ -14,12 +14,14 @@ ok(event, "change event fired on change"); equals(event.type, "selectmenuchange", "event type set to selectmenuchange"); ok(ui, "ui object is passed as second argument to event handler"); - equals(ui.item.element[0].nodeName, "OPTION", "ui points to original option element"); + equals(ui.item.element[0].nodeName, "OPTION", "ui.item.element[0] points to original option element"); + equals(ui.item.value, value, "ui.item.value property updated correctly"); } }); var widget = this.element.selectmenu("widget"), - menu = widget.filter(".ui-selectmenu-menu"); + menu = widget.filter(".ui-selectmenu-menu"), + value = this.element.find("option").eq(0).text(); menu.find(".ui-menu-item").eq(0).simulate("click"); diff --git a/tests/unit/selectmenu/selectmenu_options.js b/tests/unit/selectmenu/selectmenu_options.js index e6a057ac0..913d1b4c9 100644 --- a/tests/unit/selectmenu/selectmenu_options.js +++ b/tests/unit/selectmenu/selectmenu_options.js @@ -14,8 +14,21 @@ ok($("#qunit-fixture").find(".ui-selectmenu-menu").length, "selectmenu appendedTo other element"); }); - test("dropdown false", function () { - expect(1); + test("dropdown", function () { + expect(2); + + var button = $("#speed-button"), + widget = this.element.selectmenu("widget"), + buttonPos = { + l: button.offset().top, + t: button.offset().left + }, + menuPos = { + l: widget.offset().top, + t: widget.offset().left + }; + + equals(menuPos.t, buttonPos.t, "menu positioned below button in dropdown mode"); //button has no height ok(this.element.selectmenu("option", "dropdown", false), "accepts false"); }); @@ -23,9 +36,11 @@ test("value option", function () { expect(1); - this.element.selectmenu("option", "value", "jQuery UI"); + var value = this.element.find("option").eq(0).text(); + + this.element.selectmenu("option", "value", value); - equals(this.element.selectmenu("option", "value"), "jQuery UI", "should be set to 'jQuery UI'"); + equals(this.element.selectmenu("option", "value"), value, "should be set to " + value); }); })(jQuery); diff --git a/tests/visual/selectmenu/autocomplete.html b/tests/visual/selectmenu/autocomplete.html deleted file mode 100644 index b9c161699..000000000 --- a/tests/visual/selectmenu/autocomplete.html +++ /dev/null @@ -1,94 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="utf-8"> - <title>jQuery UI Selectmenu - Event functionality</title> - <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css"> - <script src="../../../jquery-1.7.1.js"></script> - <script src="../../../ui/jquery.ui.core.js"></script> - <script src="../../../ui/jquery.ui.widget.js"></script> - <script src="../../../ui/jquery.ui.position.js"></script> - <script src="../../../ui/jquery.ui.autocomplete.js"></script> - <script src="../../../ui/jquery.ui.button.js"></script> - <script src="../../../ui/jquery.ui.menu.js"></script> - <script src="../../../ui/jquery.ui.selectmenu.js"></script> - <link rel="stylesheet" href="../../../demos/demos.css"> - <script> - $(function() { - $('select#speed').selectmenu(); - - var availableTags = [ - "ActionScript", - "AppleScript", - "Asp", - "BASIC", - "C", - "C++", - "Clojure", - "COBOL", - "ColdFusion", - "Erlang", - "Fortran", - "Groovy", - "Haskell", - "Java", - "JavaScript", - "Lisp", - "Perl", - "PHP", - "Python", - "Ruby", - "Scala", - "Scheme" - ]; - $( "#tags" ).autocomplete({ - source: availableTags - }); - }); - </script> - <style> - form { margin: 20px 0 0 0 } - fieldset { border: 0; } - label { display: block; } - select { width: 200px; } - </style> -</head> -<body> - -<div class="demo"> - - -<form action="#"> - <fieldset> - <label for="speed">Select a speed:</label> - <select name="speed" id="speed"> - <option value="Slower">Slower</option> - <option value="Slow">Slow</option> - <option value="Medium" selected="selected">Medium</option> - <option value="Fast">Fast</option> - <option value="Faster">Faster</option> - </select> - </fieldset> -</form> - -<br /> -<br /> -<br /> -<br /> -<br /> -<br /> -<br /> -<br /> -<br /> - -<div class="ui-widget"> - <label for="tags">Tags: </label> - <input id="tags"> -</div> - -</div><!-- End demo --> - - - -</body> -</html> diff --git a/tests/visual/selectmenu/tabs.html b/tests/visual/selectmenu/compatibility .html index 658da8a20..a99a629df 100644 --- a/tests/visual/selectmenu/tabs.html +++ b/tests/visual/selectmenu/compatibility .html @@ -2,21 +2,52 @@ <html lang="en"> <head> <meta charset="utf-8"> - <title>jQuery UI Selectmenu - Event functionality</title> + <title>jQuery UI Selectmenu - Compatibility with other widgets</title> <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css"> <script src="../../../jquery-1.7.1.js"></script> <script src="../../../ui/jquery.ui.core.js"></script> <script src="../../../ui/jquery.ui.widget.js"></script> <script src="../../../ui/jquery.ui.position.js"></script> <script src="../../../ui/jquery.ui.tabs.js"></script> + <script src="../../../ui/jquery.ui.dialog.js"></script> + <script src="../../../ui/jquery.ui.autocomplete.js"></script> <script src="../../../ui/jquery.ui.button.js"></script> <script src="../../../ui/jquery.ui.menu.js"></script> <script src="../../../ui/jquery.ui.selectmenu.js"></script> <link rel="stylesheet" href="../../../demos/demos.css"> <script> $(function() { - $( "#tabs" ).tabs(); $('select').selectmenu(); + + var availableTags = [ + "ActionScript", + "AppleScript", + "Asp", + "BASIC", + "C", + "C++", + "Clojure", + "COBOL", + "ColdFusion", + "Erlang", + "Fortran", + "Groovy", + "Haskell", + "Java", + "JavaScript", + "Lisp", + "Perl", + "PHP", + "Python", + "Ruby", + "Scala", + "Scheme" + ]; + $( "#tags" ).autocomplete({ + source: availableTags + }); + $( "#tabs" ).tabs(); + $( "#dialog" ).dialog(); }); </script> <style> @@ -24,17 +55,22 @@ fieldset { border: 0; } label { display: block; } select { width: 200px; } + #tabs { margin: 50px 0 0 0 } </style> </head> <body> <div class="demo"> +<div class="ui-widget"> + <label for="tags">Tags: </label> + <input id="tags"> +</div> <div id="tabs"> <ul> <li><a href="#tabs-1">Nunc tincidunt</a></li> - <li><a href="#tabs-2">Proin dolor</a></li> + <li><a href="#tabs-2">Selectmenu</a></li> <li><a href="#tabs-3">Aenean lacinia</a></li> </ul> <div id="tabs-1"> @@ -60,6 +96,23 @@ </div> </div> +<div id="dialog" title="Basic dialog"> + <p>Some example content</p> + <p><a href="#nogo">Test Link</a></p> + <form action="#"> + <fieldset> + <label for="speed">Select a speed:</label> + <select name="speed" id="speed"> + <option value="Slower">Slower</option> + <option value="Slow">Slow</option> + <option value="Medium" selected="selected">Medium</option> + <option value="Fast">Fast</option> + <option value="Faster">Faster</option> + </select> + </fieldset> + </form> +</div> + </div><!-- End demo --> diff --git a/tests/visual/selectmenu/dialog.html b/tests/visual/selectmenu/dialog.html deleted file mode 100644 index f80083933..000000000 --- a/tests/visual/selectmenu/dialog.html +++ /dev/null @@ -1,72 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="utf-8"> - <title>jQuery UI Selectmenu - Event functionality</title> - <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css"> - <script src="../../../jquery-1.7.1.js"></script> - <script src="../../../ui/jquery.ui.core.js"></script> - <script src="../../../ui/jquery.ui.widget.js"></script> - <script src="../../../ui/jquery.ui.position.js"></script> - <script src="../../../ui/jquery.ui.dialog.js"></script> - <script src="../../../ui/jquery.ui.button.js"></script> - <script src="../../../ui/jquery.ui.menu.js"></script> - <script src="../../../ui/jquery.ui.selectmenu.js"></script> - <link rel="stylesheet" href="../../../demos/demos.css"> - <script> - $(function() { - $('select#speed').selectmenu(); - - $( "#dialog" ).dialog(); - }); - </script> - <style> - form { margin: 20px 0 0 0 } - fieldset { border: 0; } - label { display: block; } - select { width: 200px; } - </style> -</head> -<body> - -<div class="demo"> - - -<div id="dialog" title="Basic dialog"> - <p>Some example content</p> - <p><a href="#nogo">Test Link</a></p> - <form action="#"> - <fieldset> - <label for="speed">Select a speed:</label> - <select name="speed" id="speed"> - <option value="Slower">Slower</option> - <option value="Slow">Slow</option> - <option value="Medium" selected="selected">Medium</option> - <option value="Fast">Fast</option> - <option value="Faster">Faster</option> - </select> - </fieldset> - </form> -</div> - -<!-- Sample page content to illustrate the layering of the dialog --> -<div class="hiddenInViewSource" style="padding:20px;"> -<p>Sed vel diam id libero <a href="http://example.com">rutrum convallis</a>. Donec aliquet leo vel magna. Phasellus rhoncus faucibus ante. Etiam bibendum, enim faucibus aliquet rhoncus, arcu felis ultricies neque, sit amet auctor elit eros a lectus.</p> -<form> - <input value="text input" /><br /> - <input type="checkbox" />checkbox<br /> - <input type="radio" />radio<br /> - <select> - <option>select</option> - </select><br /><br /> - <textarea>textarea</textarea><br /> -</form> -</div><!-- End sample page content --> - - -</div><!-- End demo --> - - - -</body> -</html> diff --git a/tests/visual/selectmenu/events.html b/tests/visual/selectmenu/events.html index e17434add..7371e1373 100644 --- a/tests/visual/selectmenu/events.html +++ b/tests/visual/selectmenu/events.html @@ -2,7 +2,7 @@ <html lang="en"> <head> <meta charset="utf-8"> - <title>jQuery UI Selectmenu - Event functionality</title> + <title>jQuery UI Selectmenu - Events functionality</title> <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css"> <script src="../../../jquery-1.7.1.js"></script> <script src="../../../ui/jquery.ui.core.js"></script> diff --git a/tests/visual/selectmenu/methods.html b/tests/visual/selectmenu/methods.html index 5476dfff8..b3e5a42e5 100644 --- a/tests/visual/selectmenu/methods.html +++ b/tests/visual/selectmenu/methods.html @@ -2,7 +2,7 @@ <html lang="en"> <head> <meta charset="utf-8"> - <title>jQuery UI Selectmenu - Event functionality</title> + <title>jQuery UI Selectmenu - Methids functionality</title> <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css"> <script src="../../../jquery-1.7.1.js"></script> <script src="../../../ui/jquery.ui.core.js"></script> diff --git a/tests/visual/selectmenu/option.html b/tests/visual/selectmenu/option.html index fef35ab9f..308a9ebc2 100644 --- a/tests/visual/selectmenu/option.html +++ b/tests/visual/selectmenu/option.html @@ -2,7 +2,7 @@ <html lang="en"> <head> <meta charset="utf-8"> - <title>jQuery UI Selectmenu - Event functionality</title> + <title>jQuery UI Selectmenu - Option functionality</title> <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css"> <script src="../../../jquery-1.7.1.js"></script> <script src="../../../ui/jquery.ui.core.js"></script> diff --git a/tests/visual/selectmenu/themeswitcher.html b/tests/visual/selectmenu/themeswitcher.html new file mode 100644 index 000000000..c533fc4ae --- /dev/null +++ b/tests/visual/selectmenu/themeswitcher.html @@ -0,0 +1,104 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>jQuery UI Selectmenu - Themeswitcher functionality</title> + <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css"> + <script src="../../../jquery-1.7.1.js"></script> + <script src="../../../ui/jquery.ui.core.js"></script> + <script src="../../../ui/jquery.ui.widget.js"></script> + <script src="../../../ui/jquery.ui.position.js"></script> + <script src="../../../ui/jquery.ui.button.js"></script> + <script src="../../../ui/jquery.ui.menu.js"></script> + <script src="../../../ui/jquery.ui.selectmenu.js"></script> + <link rel="stylesheet" href="../../../demos/demos.css"> + <script> + $(function() { + $('select#speed').selectmenu(); + + var withOverflow = $('select#number').selectmenu({ + dropdown: false + }); + withOverflow.selectmenu("widget").addClass("overflow"); + + $('select#files').selectmenu(); + }); + </script> + <style> + form { margin: 100px 0 0 0 } + fieldset { border: 0; } + label { display: block; } + select { width: 200px; } + .overflow ul { height: 200px; overflow: auto; overflow-y: auto; overflow-x: hidden;} + </style> +</head> +<body> + +<div class="demo"> + +<form action="#"> + <fieldset> + <label for="speed">Select a speed:</label> + <select name="speed" id="speed"> + <option value="Slower">Slower</option> + <option value="Slow">Slow</option> + <option value="Medium" selected="selected">Medium</option> + <option value="Fast">Fast</option> + <option value="Faster">Faster</option> + </select> + <br /> + <br /> + <br /> + <label for="number">Select a number:</label> + <select name="number" id="number"> + <option value="1">1</option> + <option value="2" selected="selected">2</option> + <option value="3">3</option> + <option value="4">4</option> + <option value="5">5</option> + <option value="6">6</option> + <option value="7">7</option> + <option value="8">8</option> + <option value="9">9</option> + <option value="10">10</option> + <option value="11">11</option> + <option value="12">12</option> + <option value="13">13</option> + <option value="14">14</option> + <option value="15">15</option> + <option value="16">16</option> + <option value="17">17</option> + <option value="18">18</option> + <option value="19">19</option> + </select> + <br /> + <br /> + <br /> + <label for="files">Select a file:</label> + <select name="files" id="files"> + <optgroup label="Scripts"> + <option value="jquery">jQuery.js</option> + <option value="jqueryui">ui.jQuery.js</option> + </optgroup> + <optgroup label="Other files"> + <option value="somefile">Some unknown file</option> + <option value="someotherfile">Some other file</option> + </optgroup> + </select> + </fieldset> +</form> + +</div><!-- End demo --> + + +<script type="text/javascript" src="http://jqueryui.com/themeroller/themeswitchertool/"></script> +<script> + $('<div/>').css({ + position: "absolute", + right: 10, + top: 10 + }).appendTo(document.body).themeswitcher(); +</script> + +</body> +</html> diff --git a/themes/base/jquery.ui.button.css b/themes/base/jquery.ui.button.css index 0d11065f4..2ae50afd1 100644 --- a/themes/base/jquery.ui.button.css +++ b/themes/base/jquery.ui.button.css @@ -7,7 +7,7 @@ * * http://docs.jquery.com/UI/Button#theming */ -.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ +.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */ .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ .ui-button-icons-only { width: 3.4em; } diff --git a/themes/base/jquery.ui.dialog.css b/themes/base/jquery.ui.dialog.css index 12609ed19..c3a1d85ea 100644 --- a/themes/base/jquery.ui.dialog.css +++ b/themes/base/jquery.ui.dialog.css @@ -9,7 +9,7 @@ */ .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } -.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } diff --git a/ui/jquery.ui.autocomplete.js b/ui/jquery.ui.autocomplete.js index dbda2058e..bd415aa2b 100644 --- a/ui/jquery.ui.autocomplete.js +++ b/ui/jquery.ui.autocomplete.js @@ -58,6 +58,7 @@ $.widget( "ui.autocomplete", { suppressKeyPressRepeat, suppressInput; + this.isMultiLine = this.element.is( "textarea,[contenteditable]" ); this.valueMethod = this.element[ this.element.is( "input,textarea" ) ? "val" : "text" ]; this.element @@ -92,15 +93,11 @@ $.widget( "ui.autocomplete", { break; case keyCode.UP: suppressKeyPress = true; - self._move( "previous", event ); - // prevent moving cursor to beginning of text field in some browsers - event.preventDefault(); + self._keyEvent( "previous", event ); break; case keyCode.DOWN: suppressKeyPress = true; - self._move( "next", event ); - // prevent moving cursor to end of text field in some browsers - event.preventDefault(); + self._keyEvent( "next", event ); break; case keyCode.ENTER: case keyCode.NUMPAD_ENTER: @@ -151,14 +148,10 @@ $.widget( "ui.autocomplete", { self._move( "nextPage", event ); break; case keyCode.UP: - self._move( "previous", event ); - // prevent moving cursor to beginning of text field in some browsers - event.preventDefault(); + self._keyEvent( "previous", event ); break; case keyCode.DOWN: - self._move( "next", event ); - // prevent moving cursor to end of text field in some browsers - event.preventDefault(); + self._keyEvent( "next", event ); break; } }) @@ -495,6 +488,15 @@ $.widget( "ui.autocomplete", { _value: function( value ) { return this.valueMethod.apply( this.element, arguments ); + }, + + _keyEvent: function( keyEvent, event ) { + if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { + this._move( keyEvent, event ); + + // prevents moving cursor to beginning/end of the text field in some browsers + event.preventDefault(); + } } }); diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js index 49ef8f64b..3d7638667 100644 --- a/ui/jquery.ui.dialog.js +++ b/ui/jquery.ui.dialog.js @@ -625,7 +625,7 @@ $.widget("ui.dialog", { height: "auto", width: options.width }) - .height(); + .outerHeight(); minContentHeight = Math.max( 0, options.minHeight - nonContentHeight ); if ( options.height === "auto" ) { diff --git a/ui/jquery.ui.menu.js b/ui/jquery.ui.menu.js index 4fe859f4e..0263cff65 100644 --- a/ui/jquery.ui.menu.js +++ b/ui/jquery.ui.menu.js @@ -20,7 +20,7 @@ $.widget( "ui.menu", { defaultElement: "<ul>", delay: 150, options: { - items: "ul", + menus: "ul", position: { my: "left top", at: "right top" @@ -29,7 +29,6 @@ $.widget( "ui.menu", { }, _create: function() { this.activeMenu = this.element; - this.isScrolling = false; this.menuId = this.element.attr( "id" ) || "ui-menu-" + idIncrement++; if ( this.element.find( ".ui-icon" ).length ) { this.element.addClass( "ui-menu-icons" ); @@ -66,13 +65,10 @@ $.widget( "ui.menu", { }, "mouseover .ui-menu-item": function( event ) { event.stopImmediatePropagation(); - if ( !this.isScrolling ) { - var target = $( event.currentTarget ); - // Remove ui-state-active class from siblings of the newly focused menu item to avoid a jump caused by adjacent elements both having a class with a border - target.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" ); - this.focus( event, target ); - } - this.isScrolling = false; + var target = $( event.currentTarget ); + // Remove ui-state-active class from siblings of the newly focused menu item to avoid a jump caused by adjacent elements both having a class with a border + target.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" ); + this.focus( event, target ); }, "mouseleave": "collapseAll", "mouseleave .ui-menu": "collapseAll", @@ -86,10 +82,6 @@ $.widget( "ui.menu", { this.collapseAll( event ); } }, 0); - }, - scroll: function( event ) { - // Keep track of scrolling to prevent mouseover from firing inadvertently when scrolling the menu - this.isScrolling = true; } }); @@ -258,7 +250,7 @@ $.widget( "ui.menu", { refresh: function() { // initialize nested menus - var submenus = this.element.find( this.options.items + ":not( .ui-menu )" ) + var submenus = this.element.find( this.options.menus + ":not( .ui-menu )" ) .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" ) .attr( "role", "menu" ) .hide() |