Skip to content

Commit

Permalink
Deprecated beforeclose option instead of removing it for now, fixes r…
Browse files Browse the repository at this point in the history
…eopened #4669 - Dialog: beforeclose option should be beforeClose.
  • Loading branch information
rdworth committed Jan 27, 2010
1 parent 6de9b51 commit 3eaf9da
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 1 deletion.
46 changes: 45 additions & 1 deletion tests/unit/dialog/dialog_events.js
Expand Up @@ -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) {
Expand All @@ -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");
Expand Down
13 changes: 13 additions & 0 deletions ui/jquery.ui.dialog.js
Expand Up @@ -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());
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 3eaf9da

Please sign in to comment.