Skip to content

Commit 55360ee

Browse files
djQuerymikesherov
authored andcommitted
Dialog: modified _createOverlay to _appendTo instead of document.body. Fixed #8984 - Modal dialogs display behind overlay when using appendTo option
1 parent c53198c commit 55360ee

File tree

2 files changed

+29
-9
lines changed

2 files changed

+29
-9
lines changed

tests/unit/dialog/dialog_options.js

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,43 +6,63 @@
66
module("dialog: options");
77

88
test( "appendTo", function() {
9-
expect( 8 );
9+
expect( 16 );
1010
var detached = $( "<div>" ),
11-
element = $( "#dialog1" ).dialog();
11+
element = $( "#dialog1" ).dialog({
12+
modal: true
13+
});
1214
equal( element.dialog( "widget" ).parent()[0], document.body, "defaults to body" );
15+
equal( $( ".ui-widget-overlay" ).parent()[0], document.body, "overlay defaults to body" );
1316
element.dialog( "destroy" );
1417

1518
element.dialog({
16-
appendTo: ".wrap"
19+
appendTo: ".wrap",
20+
modal: true
1721
});
1822
equal( element.dialog( "widget" ).parent()[0], $( "#wrap1" )[0], "first found element" );
23+
equal( $( ".ui-widget-overlay" ).parent()[0], $( "#wrap1" )[0], "overlay first found element" );
1924
equal( $( "#wrap2 .ui-dialog" ).length, 0, "only appends to one element" );
25+
equal( $( "#wrap2 .ui-widget-overlay" ).length, 0, "overlay only appends to one element" );
2026
element.dialog( "destroy" );
2127

2228
element.dialog({
23-
appendTo: null
29+
appendTo: null,
30+
modal: true
2431
});
2532
equal( element.dialog( "widget" ).parent()[0], document.body, "null" );
33+
equal( $( ".ui-widget-overlay" ).parent()[0], document.body, "overlay null" );
2634
element.dialog( "destroy" );
2735

28-
element.dialog({ autoOpen: false }).dialog( "option", "appendTo", "#wrap1" ).dialog( "open" );
36+
element.dialog({
37+
autoOpen: false,
38+
modal: true
39+
}).dialog( "option", "appendTo", "#wrap1" ).dialog( "open" );
2940
equal( element.dialog( "widget" ).parent()[0], $( "#wrap1" )[0], "modified after init" );
41+
equal( $( ".ui-widget-overlay" ).parent()[0], $( "#wrap1" )[0], "overlay modified after init" );
3042
element.dialog( "destroy" );
3143

3244
element.dialog({
33-
appendTo: detached
45+
appendTo: detached,
46+
modal: true
3447
});
3548
equal( element.dialog( "widget" ).parent()[0], detached[0], "detached jQuery object" );
49+
equal( detached.find( ".ui-widget-overlay" ).parent()[0], detached[0], "overlay detached jQuery object" );
3650
element.dialog( "destroy" );
3751

3852
element.dialog({
39-
appendTo: detached[0]
53+
appendTo: detached[0],
54+
modal: true
4055
});
4156
equal( element.dialog( "widget" ).parent()[0], detached[0], "detached DOM element" );
57+
equal( detached.find( ".ui-widget-overlay" ).parent()[0], detached[0], "overlay detached DOM element" );
4258
element.dialog( "destroy" );
4359

44-
element.dialog({ autoOpen: false }).dialog( "option", "appendTo", detached );
60+
element.dialog({
61+
autoOpen: false,
62+
modal: true
63+
}).dialog( "option", "appendTo", detached );
4564
equal( element.dialog( "widget" ).parent()[0], detached[0], "detached DOM element via option()" );
65+
equal( detached.find( ".ui-widget-overlay" ).length, 0, "overlay detached DOM element via option()" );
4666
element.dialog( "destroy" );
4767
});
4868

ui/jquery.ui.dialog.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -695,7 +695,7 @@ $.widget( "ui.dialog", {
695695

696696
this.overlay = $("<div>")
697697
.addClass("ui-widget-overlay ui-front")
698-
.appendTo( this.document[0].body );
698+
.appendTo( this._appendTo() );
699699
this._on( this.overlay, {
700700
mousedown: "_keepFocus"
701701
});

0 commit comments

Comments
 (0)