Skip to content

Commit 3eaf9da

Browse files
committed
Deprecated beforeclose option instead of removing it for now, fixes reopened #4669 - Dialog: beforeclose option should be beforeClose.
1 parent 6de9b51 commit 3eaf9da

File tree

2 files changed

+58
-1
lines changed

2 files changed

+58
-1
lines changed

tests/unit/dialog/dialog_events.js

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,40 @@ test("close", function() {
186186
el.remove();
187187
});
188188

189+
//handling of deprecated beforeclose (vs beforeClose) option
190+
//Ticket #4669 http://dev.jqueryui.com/ticket/4669
191+
//TODO: remove in 1.9pre
192+
test("beforeclose", function() {
193+
expect(10);
194+
195+
el = $('<div></div>').dialog({
196+
beforeclose: function(ev, ui) {
197+
ok(true, '.dialog("close") fires beforeClose callback');
198+
equals(this, el[0], "context of callback");
199+
equals(ev.type, 'dialogbeforeclose', 'event type in callback');
200+
same(ui, {}, 'ui hash in callback');
201+
return false;
202+
}
203+
});
204+
el.dialog('close');
205+
isOpen('beforeclose (deprecated) callback should prevent dialog from closing');
206+
el.remove();
207+
208+
el = $('<div></div>').dialog();
209+
el.dialog('option', 'beforeclose', function(ev, ui) {
210+
ok(true, '.dialog("close") fires beforeClose callback');
211+
equals(this, el[0], "context of callback");
212+
equals(ev.type, 'dialogbeforeclose', 'event type in callback');
213+
same(ui, {}, 'ui hash in callback');
214+
return false;
215+
});
216+
el.dialog('close');
217+
isOpen('beforeclose (deprecated) callback should prevent dialog from closing');
218+
el.remove();
219+
});
220+
189221
test("beforeClose", function() {
190-
expect(9);
222+
expect(14);
191223

192224
el = $('<div></div>').dialog({
193225
beforeClose: function(ev, ui) {
@@ -202,6 +234,18 @@ test("beforeClose", function() {
202234
isOpen('beforeClose callback should prevent dialog from closing');
203235
el.remove();
204236

237+
el = $('<div></div>').dialog();
238+
el.dialog('option', 'beforeClose', function(ev, ui) {
239+
ok(true, '.dialog("close") fires beforeClose callback');
240+
equals(this, el[0], "context of callback");
241+
equals(ev.type, 'dialogbeforeclose', 'event type in callback');
242+
same(ui, {}, 'ui hash in callback');
243+
return false;
244+
});
245+
el.dialog('close');
246+
isOpen('beforeClose callback should prevent dialog from closing');
247+
el.remove();
248+
205249
el = $('<div></div>').dialog().bind('dialogbeforeclose', function(ev, ui) {
206250
ok(true, '.dialog("close") triggers dialogbeforeclose event');
207251
equals(this, el[0], "context of event");

ui/jquery.ui.dialog.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,13 @@ $.widget("ui.dialog", {
137137
.html(title)
138138
.prependTo(uiDialogTitlebar);
139139

140+
//handling of deprecated beforeclose (vs beforeClose) option
141+
//Ticket #4669 http://dev.jqueryui.com/ticket/4669
142+
//TODO: remove in 1.9pre
143+
if ($.isFunction(options.beforeclose) && !$.isFunction(options.beforeClose)) {
144+
options.beforeClose = options.beforeclose;
145+
}
146+
140147
uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection();
141148

142149
(options.draggable && $.fn.draggable && self._makeDraggable());
@@ -451,6 +458,12 @@ $.widget("ui.dialog", {
451458
resize = false;
452459

453460
switch (key) {
461+
//handling of deprecated beforeclose (vs beforeClose) option
462+
//Ticket #4669 http://dev.jqueryui.com/ticket/4669
463+
//TODO: remove in 1.9pre
464+
case "beforeclose":
465+
key = "beforeClose";
466+
break;
454467
case "buttons":
455468
self._createButtons(value);
456469
break;

0 commit comments

Comments
 (0)