Deprecated beforeclose option instead of removing it for now, fixes reopened #4669 - Dialog: beforeclose option should be beforeClose.

This commit is contained in:
Richard Worth 2010-01-27 10:31:17 +00:00
parent 6de9b51c57
commit 3eaf9daaca
2 changed files with 58 additions and 1 deletions

View File

@ -186,8 +186,40 @@ test("close", function() {
el.remove(); 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() { test("beforeClose", function() {
expect(9); expect(14);
el = $('<div></div>').dialog({ el = $('<div></div>').dialog({
beforeClose: function(ev, ui) { beforeClose: function(ev, ui) {
@ -202,6 +234,18 @@ test("beforeClose", function() {
isOpen('beforeClose callback should prevent dialog from closing'); isOpen('beforeClose callback should prevent dialog from closing');
el.remove(); 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) { el = $('<div></div>').dialog().bind('dialogbeforeclose', function(ev, ui) {
ok(true, '.dialog("close") triggers dialogbeforeclose event'); ok(true, '.dialog("close") triggers dialogbeforeclose event');
equals(this, el[0], "context of event"); equals(this, el[0], "context of event");

View File

@ -137,6 +137,13 @@ $.widget("ui.dialog", {
.html(title) .html(title)
.prependTo(uiDialogTitlebar); .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(); uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection();
(options.draggable && $.fn.draggable && self._makeDraggable()); (options.draggable && $.fn.draggable && self._makeDraggable());
@ -451,6 +458,12 @@ $.widget("ui.dialog", {
resize = false; resize = false;
switch (key) { 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": case "buttons":
self._createButtons(value); self._createButtons(value);
break; break;