]> source.dussan.org Git - jquery-ui.git/commitdiff
fixed #3025 - dialog should have an autoResize option; default value: true
authorRichard Worth <rdworth@gmail.com>
Wed, 25 Jun 2008 10:01:24 +0000 (10:01 +0000)
committerRichard Worth <rdworth@gmail.com>
Wed, 25 Jun 2008 10:01:24 +0000 (10:01 +0000)
tests/dialog.js
ui/ui.dialog.js

index 161417e964da6d00a4c058f354da1fdeb9d9917c..423cdea7906ccda508581b262ffb4a1dc903e33c 100644 (file)
@@ -8,6 +8,7 @@
 \r
 var defaults = {\r
        autoOpen: true,\r
+       autoResize: true,\r
        buttons: {},\r
        disabled: false,\r
        dialogClass: null,\r
@@ -200,6 +201,25 @@ test("autoOpen", function() {
        el.remove();\r
 });\r
 \r
+test("autoResize", function() {\r
+       expect(2);\r
+       el = $('<div>content<br>content<br>content<br>content<br>content</div>').dialog({ autoResize: false });\r
+               var expected = { height: el.height() };\r
+               var handle = $(".ui-resizable-se", dlg());\r
+               drag(handle, 50, 50);\r
+               var actual = { height: el.height() };\r
+               compare2(actual, expected, '.dialog({ autoResize: false })');\r
+       el.remove();\r
+       el = $('<div>content<br>content<br>content<br>content<br>content</div>').dialog({ autoResize: true });\r
+               var before = { width: el.width(), height: el.height() };\r
+               var handle = $(".ui-resizable-se", dlg());\r
+               drag(handle, 50, 50);\r
+               var expected = { width: before.width + 50, height: before.height + 50 };\r
+               var actual = { width: el.width(), height: el.height() };\r
+               compare2(actual, expected, '.dialog({ autoResize: true })');\r
+       el.remove();\r
+});\r
+\r
 test("buttons", function() {\r
        expect(14);\r
        var buttons = {\r
index 4e29f47f289f1347eb1eeb9648bcdbabd983d8ed..d6a7fb22018c44e8225329e337dbd0362b2c8238 100644 (file)
@@ -40,9 +40,9 @@ $.widget("ui.dialog", {
                                .wrap('<div/>')
                                .wrap('<div/>'),
                        
-                       uiDialogContainer = uiDialogContent.parent()
+                       uiDialogContainer = (this.uiDialogContainer = uiDialogContent.parent()
                                .addClass('ui-dialog-container')
-                               .css({position: 'relative'}),
+                               .css({position: 'relative', width: '100%', height: '100%'})),
                        
                        title = options.title || uiDialogContent.attr('title') || '',
                        uiDialogTitlebar = (this.uiDialogTitlebar =
@@ -139,10 +139,12 @@ $.widget("ui.dialog", {
                                        (options.resizeStart && options.resizeStart.apply(self.element[0], arguments));
                                },
                                resize: function(e, ui) {
+                                       (options.autoResize && self.size.apply(self));
                                        (options.resize && options.resize.apply(self.element[0], arguments));
                                },
                                handles: resizeHandles,
                                stop: function(e, ui) {
+                                       (options.autoResize && self.size.apply(self));
                                        (options.resizeStop && options.resizeStop.apply(self.element[0], arguments));
                                        $.ui.dialog.overlay.resize();
                                }
@@ -231,12 +233,23 @@ $.widget("ui.dialog", {
                pTop = Math.max(pTop, minTop);
                this.uiDialog.css({top: pTop, left: pLeft});
        },
+
+       size: function() {
+               var container = this.uiDialogContainer,
+                       titlebar = this.uiDialogTitlebar,
+                       content = this.element,
+                       tbMargin = parseInt(content.css('margin-top')) + parseInt(content.css('margin-bottom')),
+                       lrMargin = parseInt(content.css('margin-left')) + parseInt(content.css('margin-right'));
+               content.height(container.height() - titlebar.outerHeight() - tbMargin);
+               content.width(container.width() - lrMargin);
+       },
        
        open: function() {
                this.overlay = this.options.modal ? new $.ui.dialog.overlay(this) : null;
                this.uiDialog.appendTo('body');
                this.position(this.options.position);
                this.uiDialog.show(this.options.show);
+               this.options.autoResize && this.size();
                this.moveToTop(true);
                
                // CALLBACK: open
@@ -289,6 +302,7 @@ $.widget("ui.dialog", {
 $.extend($.ui.dialog, {
        defaults: {
                autoOpen: true,
+               autoResize: true,
                bgiframe: false,
                buttons: {},
                closeOnEscape: true,