Skip to content

Commit e8e3168

Browse files
committed
Dialog: Batch size-related option settings.
1 parent 2dd676e commit e8e3168

File tree

1 file changed

+47
-43
lines changed

1 file changed

+47
-43
lines changed

ui/jquery.ui.dialog.js

Lines changed: 47 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,25 @@
1919
(function( $, undefined ) {
2020

2121
var uiDialogClasses =
22-
'ui-dialog ' +
23-
'ui-widget ' +
24-
'ui-widget-content ' +
25-
'ui-corner-all ';
22+
'ui-dialog ' +
23+
'ui-widget ' +
24+
'ui-widget-content ' +
25+
'ui-corner-all ',
26+
sizeRelatedOptions = {
27+
buttons: true,
28+
height: true,
29+
maxHeight: true,
30+
maxWidth: true,
31+
minHeight: true,
32+
minWidth: true,
33+
width: true
34+
},
35+
resizableRelatedOptions = {
36+
maxHeight: true,
37+
maxWidth: true,
38+
minHeight: true,
39+
minWidth: true
40+
};
2641

2742
$.widget("ui.dialog", {
2843
options: {
@@ -518,13 +533,34 @@ $.widget("ui.dialog", {
518533
}
519534
},
520535

521-
_setOption: function(key, value){
536+
_setOptions: function( options ) {
522537
var self = this,
523-
uiDialog = self.uiDialog,
524-
isDraggable = uiDialog.is( ":data(draggable)" ),
525-
isResizable = uiDialog.is( ":data(resizable)" ),
538+
resizableOptions = {},
526539
resize = false;
527540

541+
$.each( options, function( key, value ) {
542+
self._setOption( key, value );
543+
544+
if ( key in sizeRelatedOptions ) {
545+
resize = true;
546+
}
547+
if ( key in resizableRelatedOptions ) {
548+
resizableOptions[ key ] = value;
549+
}
550+
});
551+
552+
if ( resize ) {
553+
this._size();
554+
}
555+
if ( this.uiDialog.is( ":data(resizable)" ) ) {
556+
this.uiDialog.resizable( "option", resizableOptions );
557+
}
558+
},
559+
560+
_setOption: function(key, value){
561+
var self = this,
562+
uiDialog = self.uiDialog;
563+
528564
switch (key) {
529565
//handling of deprecated beforeclose (vs beforeClose) option
530566
//Ticket #4669 http://dev.jqueryui.com/ticket/4669
@@ -534,10 +570,9 @@ $.widget("ui.dialog", {
534570
break;
535571
case "buttons":
536572
self._createButtons(value);
537-
resize = true;
538573
break;
539574
case "closeText":
540-
// convert whatever was passed in to a string, for text() to not throw up
575+
// ensure that we always pass a string
541576
self.uiDialogTitlebarCloseText.text("" + value);
542577
break;
543578
case "dialogClass":
@@ -553,6 +588,7 @@ $.widget("ui.dialog", {
553588
}
554589
break;
555590
case "draggable":
591+
var isDraggable = uiDialog.is( ":data(draggable)" )
556592
if ( isDraggable && !value ) {
557593
uiDialog.draggable( "destroy" );
558594
}
@@ -561,38 +597,12 @@ $.widget("ui.dialog", {
561597
self._makeDraggable();
562598
}
563599
break;
564-
case "height":
565-
resize = true;
566-
break;
567-
case "maxHeight":
568-
if (isResizable) {
569-
uiDialog.resizable('option', 'maxHeight', value);
570-
}
571-
resize = true;
572-
break;
573-
case "maxWidth":
574-
if (isResizable) {
575-
uiDialog.resizable('option', 'maxWidth', value);
576-
}
577-
resize = true;
578-
break;
579-
case "minHeight":
580-
if (isResizable) {
581-
uiDialog.resizable('option', 'minHeight', value);
582-
}
583-
resize = true;
584-
break;
585-
case "minWidth":
586-
if (isResizable) {
587-
uiDialog.resizable('option', 'minWidth', value);
588-
}
589-
resize = true;
590-
break;
591600
case "position":
592601
self._position(value);
593602
break;
594603
case "resizable":
595604
// currently resizable, becoming non-resizable
605+
var isResizable = uiDialog.is( ":data(resizable)" )
596606
if (isResizable && !value) {
597607
uiDialog.resizable('destroy');
598608
}
@@ -611,15 +621,9 @@ $.widget("ui.dialog", {
611621
// convert whatever was passed in o a string, for html() to not throw up
612622
$(".ui-dialog-title", self.uiDialogTitlebar).html("" + (value || ' '));
613623
break;
614-
case "width":
615-
resize = true;
616-
break;
617624
}
618625

619626
$.Widget.prototype._setOption.apply(self, arguments);
620-
if (resize) {
621-
self._size();
622-
}
623627
},
624628

625629
_size: function() {

0 commit comments

Comments
 (0)