diff options
author | Richard Worth <rdworth@gmail.com> | 2010-01-27 10:31:17 +0000 |
---|---|---|
committer | Richard Worth <rdworth@gmail.com> | 2010-01-27 10:31:17 +0000 |
commit | 3eaf9daacaefa5f9f3ac469e4136c9f12cad5b9e (patch) | |
tree | 9fa320354225182337521dbf83037936a2dbec95 | |
parent | 6de9b51c578a6201d6a1e46d91c5381403f20b45 (diff) | |
download | jquery-ui-3eaf9daacaefa5f9f3ac469e4136c9f12cad5b9e.tar.gz jquery-ui-3eaf9daacaefa5f9f3ac469e4136c9f12cad5b9e.zip |
Deprecated beforeclose option instead of removing it for now, fixes reopened #4669 - Dialog: beforeclose option should be beforeClose.
-rw-r--r-- | tests/unit/dialog/dialog_events.js | 46 | ||||
-rw-r--r-- | ui/jquery.ui.dialog.js | 13 |
2 files changed, 58 insertions, 1 deletions
diff --git a/tests/unit/dialog/dialog_events.js b/tests/unit/dialog/dialog_events.js index c60e47f22..a0ff2abce 100644 --- a/tests/unit/dialog/dialog_events.js +++ b/tests/unit/dialog/dialog_events.js @@ -186,8 +186,40 @@ test("close", function() { el.remove(); }); +//handling of deprecated beforeclose (vs beforeClose) option +//Ticket #4669 http://dev.jqueryui.com/ticket/4669 +//TODO: remove in 1.9pre +test("beforeclose", function() { + expect(10); + + el = $('<div></div>').dialog({ + beforeclose: function(ev, ui) { + ok(true, '.dialog("close") fires beforeClose callback'); + equals(this, el[0], "context of callback"); + equals(ev.type, 'dialogbeforeclose', 'event type in callback'); + same(ui, {}, 'ui hash in callback'); + return false; + } + }); + el.dialog('close'); + isOpen('beforeclose (deprecated) callback should prevent dialog from closing'); + el.remove(); + + el = $('<div></div>').dialog(); + el.dialog('option', 'beforeclose', function(ev, ui) { + ok(true, '.dialog("close") fires beforeClose callback'); + equals(this, el[0], "context of callback"); + equals(ev.type, 'dialogbeforeclose', 'event type in callback'); + same(ui, {}, 'ui hash in callback'); + return false; + }); + el.dialog('close'); + isOpen('beforeclose (deprecated) callback should prevent dialog from closing'); + el.remove(); +}); + test("beforeClose", function() { - expect(9); + expect(14); el = $('<div></div>').dialog({ beforeClose: function(ev, ui) { @@ -202,6 +234,18 @@ test("beforeClose", function() { isOpen('beforeClose callback should prevent dialog from closing'); el.remove(); + el = $('<div></div>').dialog(); + el.dialog('option', 'beforeClose', function(ev, ui) { + ok(true, '.dialog("close") fires beforeClose callback'); + equals(this, el[0], "context of callback"); + equals(ev.type, 'dialogbeforeclose', 'event type in callback'); + same(ui, {}, 'ui hash in callback'); + return false; + }); + el.dialog('close'); + isOpen('beforeClose callback should prevent dialog from closing'); + el.remove(); + el = $('<div></div>').dialog().bind('dialogbeforeclose', function(ev, ui) { ok(true, '.dialog("close") triggers dialogbeforeclose event'); equals(this, el[0], "context of event"); diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js index 8c7eee234..98dfd3cf9 100644 --- a/ui/jquery.ui.dialog.js +++ b/ui/jquery.ui.dialog.js @@ -137,6 +137,13 @@ $.widget("ui.dialog", { .html(title) .prependTo(uiDialogTitlebar); + //handling of deprecated beforeclose (vs beforeClose) option + //Ticket #4669 http://dev.jqueryui.com/ticket/4669 + //TODO: remove in 1.9pre + if ($.isFunction(options.beforeclose) && !$.isFunction(options.beforeClose)) { + options.beforeClose = options.beforeclose; + } + uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection(); (options.draggable && $.fn.draggable && self._makeDraggable()); @@ -451,6 +458,12 @@ $.widget("ui.dialog", { resize = false; switch (key) { + //handling of deprecated beforeclose (vs beforeClose) option + //Ticket #4669 http://dev.jqueryui.com/ticket/4669 + //TODO: remove in 1.9pre + case "beforeclose": + key = "beforeClose"; + break; case "buttons": self._createButtons(value); break; |