From 06f6fa8524a905ec8027b8ba756eb199f2591336 Mon Sep 17 00:00:00 2001 From: meh-cfl Date: Mon, 28 Nov 2011 16:33:23 -0500 Subject: Autocomplete: Don't invoke a search from arrow keys when the element can have multi-line text. Fixes #7639 - Key up/key down in textarea's should optionally not toggle auto-complete. --- tests/unit/autocomplete/autocomplete_core.js | 86 ++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) (limited to 'tests/unit') 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 ) ); -- cgit v1.2.3 From ce0afde900fb2b55b5766a3e0e3029e24a094a75 Mon Sep 17 00:00:00 2001 From: James Khoury Date: Mon, 28 Nov 2011 16:52:10 -0500 Subject: Dialog: Modified the dialog._size() to use outerHeight in calculating the nonContentHeight. Fixed #7692 - dialog: dialog height bug is incorrect when .ui-dialog padding set. --- tests/unit/dialog/dialog_options.js | 13 +++++++++---- ui/jquery.ui.dialog.js | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'tests/unit') 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 = $('
').dialog(); - equals(dlg().height(), 150, "default height"); + equals(dlg().outerHeight(), 150, "default height"); el.remove(); el = $('
').dialog({ height: 237 }); - equals(dlg().height(), 237, "explicit height"); + equals(dlg().outerHeight(), 237, "explicit height"); el.remove(); el = $('
').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 = $('
').css("padding", "20px") + .dialog({ height: 240 }); + equals(dlg().outerHeight(), 240, "explicit height with padding"); el.remove(); }); 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" ) { -- cgit v1.2.3