aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/unit/dialog/dialog_deprecated.js32
-rw-r--r--tests/unit/dialog/dialog_options.js32
-rw-r--r--ui/jquery.ui.dialog.js101
3 files changed, 72 insertions, 93 deletions
diff --git a/tests/unit/dialog/dialog_deprecated.js b/tests/unit/dialog/dialog_deprecated.js
index 06052b6bf..fcbd22faa 100644
--- a/tests/unit/dialog/dialog_deprecated.js
+++ b/tests/unit/dialog/dialog_deprecated.js
@@ -1,4 +1,4 @@
-module("dialog (deprecated): position opton with array");
+module("dialog (deprecated): position option with string and array");
if ( !$.ui.ie ) {
test("position, right bottom on window w/array", function() {
@@ -10,6 +10,16 @@ if ( !$.ui.ie ) {
closeEnough(offset.top, $(window).height() - dialog.outerHeight() + $(window).scrollTop(), 1);
el.remove();
});
+
+ test("position, right bottom on window", function() {
+ expect( 2 );
+ var el = $('<div></div>').dialog({ position: "right bottom" }),
+ dialog = el.dialog('widget'),
+ offset = dialog.offset();
+ closeEnough(offset.left, $(window).width() - dialog.outerWidth() + $(window).scrollLeft(), 1);
+ closeEnough(offset.top, $(window).height() - dialog.outerHeight() + $(window).scrollTop(), 1);
+ el.remove();
+ });
}
test("position, offset from top left w/array", function() {
@@ -21,3 +31,23 @@ test("position, offset from top left w/array", function() {
closeEnough(offset.top, 10 + $(window).scrollTop(), 1);
el.remove();
});
+
+test("position, top on window", function() {
+ expect( 2 );
+ var el = $('<div></div>').dialog({ position: "top" }),
+ dialog = el.dialog('widget'),
+ offset = dialog.offset();
+ closeEnough(offset.left, Math.round($(window).width() / 2 - dialog.outerWidth() / 2) + $(window).scrollLeft(), 1);
+ closeEnough(offset.top, $(window).scrollTop(), 1);
+ el.remove();
+});
+
+test("position, left on window", function() {
+ expect( 2 );
+ var el = $('<div></div>').dialog({ position: "left" }),
+ dialog = el.dialog('widget'),
+ offset = dialog.offset();
+ closeEnough(offset.left, 0, 1);
+ closeEnough(offset.top, Math.round($(window).height() / 2 - dialog.outerHeight() / 2) + $(window).scrollTop(), 1);
+ el.remove();
+});
diff --git a/tests/unit/dialog/dialog_options.js b/tests/unit/dialog/dialog_options.js
index 4e11ecf62..f01a1a2a8 100644
--- a/tests/unit/dialog/dialog_options.js
+++ b/tests/unit/dialog/dialog_options.js
@@ -298,39 +298,8 @@ test("position, default center on window", function() {
el.remove();
});
-test("position, top on window", function() {
- expect( 2 );
- var el = $('<div></div>').dialog({ position: "top" }),
- dialog = el.dialog('widget'),
- offset = dialog.offset();
- closeEnough(offset.left, Math.round($(window).width() / 2 - dialog.outerWidth() / 2) + $(window).scrollLeft(), 1);
- closeEnough(offset.top, $(window).scrollTop(), 1);
- el.remove();
-});
-
-test("position, left on window", function() {
- expect( 2 );
- var el = $('<div></div>').dialog({ position: "left" }),
- dialog = el.dialog('widget'),
- offset = dialog.offset();
- closeEnough(offset.left, 0, 1);
- closeEnough(offset.top, Math.round($(window).height() / 2 - dialog.outerHeight() / 2) + $(window).scrollTop(), 1);
- el.remove();
-});
-
// todo: figure out these fails in IE7
if ( !$.ui.ie ) {
-
- test("position, right bottom on window", function() {
- expect( 2 );
- var el = $('<div></div>').dialog({ position: "right bottom" }),
- dialog = el.dialog('widget'),
- offset = dialog.offset();
- closeEnough(offset.left, $(window).width() - dialog.outerWidth() + $(window).scrollLeft(), 1);
- closeEnough(offset.top, $(window).height() - dialog.outerHeight() + $(window).scrollTop(), 1);
- el.remove();
- });
-
test("position, right bottom at right bottom via ui.position args", function() {
expect( 2 );
var el = $('<div></div>').dialog({
@@ -346,7 +315,6 @@ if ( !$.ui.ie ) {
closeEnough(offset.top, $(window).height() - dialog.outerHeight() + $(window).scrollTop(), 1);
el.remove();
});
-
}
test("position, at another element", function() {
diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js
index b998c2558..b9f73e954 100644
--- a/ui/jquery.ui.dialog.js
+++ b/ui/jquery.ui.dialog.js
@@ -495,33 +495,12 @@ $.widget("ui.dialog", {
},
_position: function() {
- var position = this.options.position,
- myAt = [],
- isVisible;
-
- if ( position ) {
- if ( typeof position === "string" ) {
- myAt = position.split( " " );
- if ( myAt.length === 1 ) {
- myAt[ 1 ] = myAt[ 0 ];
- }
- position = {
- my: myAt[0] + " " + myAt[1],
- at: myAt.join( " " )
- };
- position = $.extend( {}, $.ui.dialog.prototype.options.position, position );
- }
-
- } else {
- position = $.ui.dialog.prototype.options.position;
- }
-
// need to show the dialog to get the actual offset in the position plugin
- isVisible = this.uiDialog.is( ":visible" );
+ var isVisible = this.uiDialog.is( ":visible" );
if ( !isVisible ) {
this.uiDialog.show();
}
- this.uiDialog.position( position );
+ this.uiDialog.position( this.options.position );
if ( !isVisible ) {
this.uiDialog.hide();
}
@@ -719,48 +698,50 @@ $.ui.dialog.overlay = {
if ( $.uiBackCompat !== false ) {
// position option with array notation
// just override with old implementation
- $.ui.dialog.prototype._position = function() {
- var position = this.options.position,
- myAt = [],
- offset = [ 0, 0 ],
- isVisible;
-
- if ( position ) {
- if ( typeof position === "string" || (typeof position === "object" && "0" in position ) ) {
- myAt = position.split ? position.split( " " ) : [ position[ 0 ], position[ 1 ] ];
- if ( myAt.length === 1 ) {
- myAt[ 1 ] = myAt[ 0 ];
- }
-
- $.each( [ "left", "top" ], function( i, offsetPosition ) {
- if ( +myAt[ i ] === myAt[ i ] ) {
- offset[ i ] = myAt[ i ];
- myAt[ i ] = offsetPosition;
+ $.widget( "ui.dialog", $.ui.dialog, {
+ _position: function() {
+ var position = this.options.position,
+ myAt = [],
+ offset = [ 0, 0 ],
+ isVisible;
+
+ if ( position ) {
+ if ( typeof position === "string" || (typeof position === "object" && "0" in position ) ) {
+ myAt = position.split ? position.split( " " ) : [ position[ 0 ], position[ 1 ] ];
+ if ( myAt.length === 1 ) {
+ myAt[ 1 ] = myAt[ 0 ];
}
- });
- position = {
- my: myAt[0] + (offset[0] < 0 ? offset[0] : "+" + offset[0]) + " " +
- myAt[1] + (offset[1] < 0 ? offset[1] : "+" + offset[1]),
- at: myAt.join( " " )
- };
- }
+ $.each( [ "left", "top" ], function( i, offsetPosition ) {
+ if ( +myAt[ i ] === myAt[ i ] ) {
+ offset[ i ] = myAt[ i ];
+ myAt[ i ] = offsetPosition;
+ }
+ });
- position = $.extend( {}, $.ui.dialog.prototype.options.position, position );
- } else {
- position = $.ui.dialog.prototype.options.position;
- }
+ position = {
+ my: myAt[0] + (offset[0] < 0 ? offset[0] : "+" + offset[0]) + " " +
+ myAt[1] + (offset[1] < 0 ? offset[1] : "+" + offset[1]),
+ at: myAt.join( " " )
+ };
+ }
- // need to show the dialog to get the actual offset in the position plugin
- isVisible = this.uiDialog.is( ":visible" );
- if ( !isVisible ) {
- this.uiDialog.show();
- }
- this.uiDialog.position( position );
- if ( !isVisible ) {
- this.uiDialog.hide();
+ position = $.extend( {}, $.ui.dialog.prototype.options.position, position );
+ } else {
+ position = $.ui.dialog.prototype.options.position;
+ }
+
+ // need to show the dialog to get the actual offset in the position plugin
+ isVisible = this.uiDialog.is( ":visible" );
+ if ( !isVisible ) {
+ this.uiDialog.show();
+ }
+ this.uiDialog.position( position );
+ if ( !isVisible ) {
+ this.uiDialog.hide();
+ }
}
- };
+ });
}
}( jQuery ) );