From 2a8494fc81177944453ab986d3272c2b55ed0b7a Mon Sep 17 00:00:00 2001 From: Kris Borchers Date: Wed, 30 Jan 2013 23:38:20 -0600 Subject: Dialog Tests: Cleanup el -> element --- tests/unit/dialog/dialog_methods.js | 88 ++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 44 deletions(-) (limited to 'tests/unit/dialog/dialog_methods.js') diff --git a/tests/unit/dialog/dialog_methods.js b/tests/unit/dialog/dialog_methods.js index efca71fd8..2c3495ca2 100644 --- a/tests/unit/dialog/dialog_methods.js +++ b/tests/unit/dialog/dialog_methods.js @@ -24,9 +24,9 @@ test("init", function() { $("
").appendTo("body").remove().dialog().remove(); ok(true, ".dialog() called on disconnected DOMElement - removed"); - var el = $("
").dialog(); - el.dialog("option", "foo"); - el.remove(); + var element = $("
").dialog(); + element.dialog("option", "foo"); + element.remove(); ok(true, "arbitrary option getter after init"); $("
").dialog().dialog("option", "foo", "bar").remove(); @@ -36,7 +36,7 @@ test("init", function() { test("destroy", function() { expect( 17 ); - var el, el2; + var element, element2; $( "#dialog1, #form-dialog" ).hide(); domEqual( "#dialog1", function() { @@ -65,17 +65,17 @@ test("destroy", function() { equal( $( ".ui-widget-overlay" ).length, 0, "overlay does not exist" ); equal( $.ui.dialog.overlayInstances, 0, "overlayInstances equals the number of open overlays"); - el = $( "#dialog1" ).dialog({ modal: true }), - el2 = $( "#dialog2" ).dialog({ modal: true }); + element = $( "#dialog1" ).dialog({ modal: true }), + element2 = $( "#dialog2" ).dialog({ modal: true }); equal( $( ".ui-widget-overlay" ).length, 2, "overlays created when dialogs are open" ); equal( $.ui.dialog.overlayInstances, 2, "overlayInstances equals the number of open overlays" ); - el.dialog( "close" ); + element.dialog( "close" ); equal( $( ".ui-widget-overlay" ).length, 1, "overlay remains after closing one dialog" ); equal( $.ui.dialog.overlayInstances, 1, "overlayInstances equals the number of open overlays" ); - el.dialog( "destroy" ); + element.dialog( "destroy" ); equal( $( ".ui-widget-overlay" ).length, 1, "overlay remains after destroying one dialog" ); equal( $.ui.dialog.overlayInstances, 1, "overlayInstances equals the number of open overlays" ); - el2.dialog( "destroy" ); + element2.dialog( "destroy" ); equal( $( ".ui-widget-overlay" ).length, 0, "overlays removed when all dialogs are destoryed" ); equal( $.ui.dialog.overlayInstances, 0, "overlayInstances equals the number of open overlays" ); }); @@ -102,40 +102,40 @@ test("#4980: Destroy should place element back in original DOM position", functi test( "enable/disable disabled", function() { expect( 2 ); - var el = $( "
" ).dialog(); - el.dialog( "disable" ); - equal(el.dialog( "option", "disabled" ), false, "disable method doesn't do anything" ); - ok( !el.dialog( "widget" ).hasClass( "ui-dialog-disabled" ), "disable method doesn't add ui-dialog-disabled class" ); + var element = $( "
" ).dialog(); + element.dialog( "disable" ); + equal(element.dialog( "option", "disabled" ), false, "disable method doesn't do anything" ); + ok( !element.dialog( "widget" ).hasClass( "ui-dialog-disabled" ), "disable method doesn't add ui-dialog-disabled class" ); }); test("close", function() { expect( 3 ); - var el, + var element, expected = $("
").dialog(), actual = expected.dialog("close"); equal(actual, expected, "close is chainable"); - el = $("
").dialog(); - ok(el.dialog("widget").is(":visible") && !el.dialog("widget").is(":hidden"), "dialog visible before close method called"); - el.dialog("close"); - ok(el.dialog("widget").is(":hidden") && !el.dialog("widget").is(":visible"), "dialog hidden after close method called"); + element = $("
").dialog(); + ok(element.dialog("widget").is(":visible") && !element.dialog("widget").is(":hidden"), "dialog visible before close method called"); + element.dialog("close"); + ok(element.dialog("widget").is(":hidden") && !element.dialog("widget").is(":visible"), "dialog hidden after close method called"); }); test("isOpen", function() { expect(4); - var el = $("
").dialog(); - equal(el.dialog("isOpen"), true, "dialog is open after init"); - el.dialog("close"); - equal(el.dialog("isOpen"), false, "dialog is closed"); - el.remove(); - - el = $("
").dialog({autoOpen: false}); - equal(el.dialog("isOpen"), false, "dialog is closed after init"); - el.dialog("open"); - equal(el.dialog("isOpen"), true, "dialog is open"); - el.remove(); + var element = $("
").dialog(); + equal(element.dialog("isOpen"), true, "dialog is open after init"); + element.dialog("close"); + equal(element.dialog("isOpen"), false, "dialog is closed"); + element.remove(); + + element = $("
").dialog({autoOpen: false}); + equal(element.dialog("isOpen"), false, "dialog is closed after init"); + element.dialog("open"); + equal(element.dialog("isOpen"), true, "dialog is open"); + element.remove(); }); test("moveToTop", function() { @@ -167,15 +167,15 @@ test("moveToTop", function() { test("open", function() { expect( 3 ); - var el, + var element, expected = $("
").dialog(), actual = expected.dialog("open"); equal(actual, expected, "open is chainable"); - el = $("
").dialog({ autoOpen: false }); - ok(el.dialog("widget").is(":hidden") && !el.dialog("widget").is(":visible"), "dialog hidden before open method called"); - el.dialog("open"); - ok(el.dialog("widget").is(":visible") && !el.dialog("widget").is(":hidden"), "dialog visible after open method called"); + element = $("
").dialog({ autoOpen: false }); + ok(element.dialog("widget").is(":hidden") && !element.dialog("widget").is(":visible"), "dialog hidden before open method called"); + element.dialog("open"); + ok(element.dialog("widget").is(":visible") && !element.dialog("widget").is(":hidden"), "dialog visible after open method called"); }); test("#6137: dialog('open') causes form elements to reset on IE7", function() { @@ -195,23 +195,23 @@ test("#6137: dialog('open') causes form elements to reset on IE7", function() { test("#5531: dialog width should be at least minWidth on creation", function () { expect( 4 ); - var el = $("
").dialog({ + var element = $("
").dialog({ width: 200, minWidth: 300 }); - equal(el.dialog("option", "width"), 300, "width is minWidth"); - el.dialog("option", "width", 200); - equal(el.dialog("option", "width"), 300, "width unchanged when set to < minWidth"); - el.dialog("option", "width", 320); - equal(el.dialog("option", "width"), 320, "width changed if set to > minWidth"); - el.remove(); + equal(element.dialog("option", "width"), 300, "width is minWidth"); + element.dialog("option", "width", 200); + equal(element.dialog("option", "width"), 300, "width unchanged when set to < minWidth"); + element.dialog("option", "width", 320); + equal(element.dialog("option", "width"), 320, "width changed if set to > minWidth"); + element.remove(); - el = $("
").dialog({ + element = $("
").dialog({ minWidth: 300 }); - ok(el.dialog("option", "width") >= 300, "width is at least 300"); - el.remove(); + ok(element.dialog("option", "width") >= 300, "width is at least 300"); + element.remove(); }); -- cgit v1.2.3 From 62cda1f95d0e7040153f0b5fe5745d199a0a094e Mon Sep 17 00:00:00 2001 From: Scott González Date: Thu, 31 Jan 2013 17:20:19 -0500 Subject: Dialog: Set the _isOpen flag immediately in open(). Fixes #8958 - Dialog: Double ui-widget-overlay when opening modal dialog triggers an event opening same dialog. --- tests/unit/dialog/dialog_methods.js | 29 +++++++++++++++++++++++++++++ ui/jquery.ui.dialog.js | 2 +- 2 files changed, 30 insertions(+), 1 deletion(-) (limited to 'tests/unit/dialog/dialog_methods.js') diff --git a/tests/unit/dialog/dialog_methods.js b/tests/unit/dialog/dialog_methods.js index 2c3495ca2..6de185513 100644 --- a/tests/unit/dialog/dialog_methods.js +++ b/tests/unit/dialog/dialog_methods.js @@ -193,6 +193,35 @@ test("#6137: dialog('open') causes form elements to reset on IE7", function() { d1.remove(); }); +asyncTest( "#8958: dialog can be opened while opening", function() { + expect( 1 ); + + var element = $( "
" ).dialog({ + autoOpen: false, + modal: true, + open: function() { + equal( $( ".ui-widget-overlay" ).length, 1 ); + start(); + } + }); + + $( "#favorite-animal" ) + // We focus the input to start the test. Once it receives focus, the + // dialog will open. Opening the dialog, will cause an element inside + // the dialog to gain focus, thus blurring the input. + .bind( "focus", function() { + element.dialog( "open" ); + }) + // When the input blurs, the dialog is in the process of opening. We + // try to open the dialog again, to make sure that dialogs properly + // handle a call to the open() method during the process of the dialog + // being opened. + .bind( "blur", function() { + element.dialog( "open" ); + }) + .focus(); +}); + test("#5531: dialog width should be at least minWidth on creation", function () { expect( 4 ); var element = $("
").dialog({ diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js index 77bf68dd1..b6ac7aed7 100644 --- a/ui/jquery.ui.dialog.js +++ b/ui/jquery.ui.dialog.js @@ -215,6 +215,7 @@ $.widget( "ui.dialog", { return; } + this._isOpen = true; this.opener = $( this.document[0].activeElement ); this._size(); @@ -226,7 +227,6 @@ $.widget( "ui.dialog", { that._trigger("focus"); }); - this._isOpen = true; this._trigger("open"); }, -- cgit v1.2.3