Skip to content

Commit 51df02e

Browse files
adambaratzscottgonzalez
authored andcommitted
Dialog: remove unneeded DOM manipulations. Fixed #7258 - optimize initialization.
1 parent 3d5d58d commit 51df02e

File tree

1 file changed

+19
-13
lines changed

1 file changed

+19
-13
lines changed

ui/jquery.ui.dialog.js

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -86,16 +86,14 @@ $.widget("ui.dialog", {
8686
titleId = $.ui.dialog.getTitleId( self.element ),
8787

8888
uiDialog = ( self.uiDialog = $( "<div>" ) )
89-
.appendTo( document.body )
90-
.hide()
9189
.addClass( uiDialogClasses + options.dialogClass )
9290
.css({
91+
display: "none",
92+
outline: 0, // TODO: move to stylesheet
9393
zIndex: options.zIndex
9494
})
9595
// setting tabIndex makes the div focusable
9696
.attr( "tabIndex", -1)
97-
// TODO: move to stylesheet
98-
.css( "outline", 0 )
9997
.keydown(function( event ) {
10098
if ( options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
10199
event.keyCode === $.ui.keyCode.ESCAPE ) {
@@ -156,6 +154,8 @@ $.widget("ui.dialog", {
156154
self._createButtons( options.buttons );
157155
self._isOpen = false;
158156

157+
uiDialog.appendTo( document.body );
158+
159159
if ( $.fn.bgiframe ) {
160160
uiDialog.bgiframe();
161161
}
@@ -310,9 +310,14 @@ $.widget("ui.dialog", {
310310

311311
// set focus to the first tabbable element in the content area or the first button
312312
// if there are no tabbable elements, set focus on the dialog itself
313-
$( self.element.find( ":tabbable" ).get().concat(
314-
uiDialog.find( ".ui-dialog-buttonpane :tabbable" ).get().concat(
315-
uiDialog.get() ) ) ).eq( 0 ).focus();
313+
var hasFocus = self.element.find( ":tabbable" );
314+
if ( !hasFocus.length ) {
315+
hasFocus = uiDialog.find( ".ui-dialog-buttonpane :tabbable" );
316+
if ( !hasFocus.length ) {
317+
hasFocus = uiDialog;
318+
}
319+
}
320+
hasFocus.eq( 0 ).focus();
316321

317322
self._isOpen = true;
318323
self._trigger( "open" );
@@ -322,12 +327,7 @@ $.widget("ui.dialog", {
322327

323328
_createButtons: function( buttons ) {
324329
var self = this,
325-
hasButtons = false,
326-
uiDialogButtonPane = $( "<div>" )
327-
.addClass( "ui-dialog-buttonpane ui-widget-content ui-helper-clearfix" ),
328-
uiButtonSet = $( "<div>" )
329-
.addClass( "ui-dialog-buttonset" )
330-
.appendTo( uiDialogButtonPane );
330+
hasButtons = false;
331331

332332
// if we already have a button pane, remove it
333333
self.uiDialog.find( ".ui-dialog-buttonpane" ).remove();
@@ -338,6 +338,12 @@ $.widget("ui.dialog", {
338338
});
339339
}
340340
if ( hasButtons ) {
341+
var uiDialogButtonPane = $( "<div>" )
342+
.addClass( "ui-dialog-buttonpane ui-widget-content ui-helper-clearfix" ),
343+
uiButtonSet = $( "<div>" )
344+
.addClass( "ui-dialog-buttonset" )
345+
.appendTo( uiDialogButtonPane );
346+
341347
$.each( buttons, function( name, props ) {
342348
props = $.isFunction( props ) ?
343349
{ click: props, text: name } :

0 commit comments

Comments
 (0)