Search and Top Navigation
Ticket #4716: dialog-position.patch
File dialog-position.patch, 2.2 KB (added by scottgonzalez, July 24, 2009 08:27PM UTC)
Index: /Users/sgonzale/Documents/workspace/jQuery UI/ui/ui.dialog.js
===================================================================
--- /Users/sgonzale/Documents/workspace/jQuery UI/ui/ui.dialog.js (revision 2970)
+++ /Users/sgonzale/Documents/workspace/jQuery UI/ui/ui.dialog.js (working copy)
@@ -10,6 +10,7 @@
* Depends:
* ui.core.js
* ui.draggable.js
+ * ui.position.js
* ui.resizable.js
*/
(function($) {
@@ -377,55 +378,26 @@
},
_position: function(pos) {
- var wnd = $(window), doc = $(document),
- pTop = doc.scrollTop(), pLeft = doc.scrollLeft(),
- minTop = pTop,
- uiDialog = this.uiDialog;
-
- if ($.inArray(pos, ['center','top','right','bottom','left']) >= 0) {
- pos = [
- pos == 'right' || pos == 'left' ? pos : 'center',
- pos == 'top' || pos == 'bottom' ? pos : 'middle'
- ];
+ var offset = [0, 0];
+ pos = $.isArray(pos) ? pos : pos.split(' ');
+ if (pos.length == 1) {
+ pos[1] = pos[0];
}
- if (pos.constructor != Array) {
- pos = ['center', 'middle'];
- }
- if (pos[0].constructor == Number) {
- pLeft += pos[0];
- } else {
- switch (pos[0]) {
- case 'left':
- pLeft += 0;
- break;
- case 'right':
- pLeft += wnd.width() - uiDialog.outerWidth();
- break;
- default:
- case 'center':
- pLeft += (wnd.width() - uiDialog.outerWidth()) / 2;
+
+ $.each(['left', 'top'], function(i, offsetPosition) {
+ if (typeof pos[i] == 'number') {
+ offset[i] = pos[i];
+ pos[i] = offsetPosition;
}
- }
- if (pos[1].constructor == Number) {
- pTop += pos[1];
- } else {
- switch (pos[1]) {
- case 'top':
- pTop += 0;
- break;
- case 'bottom':
- pTop += wnd.height() - uiDialog.outerHeight();
- break;
- default:
- case 'middle':
- pTop += (wnd.height() - uiDialog.outerHeight()) / 2;
- }
- }
+ });
- // prevent the dialog from being too high (make sure the titlebar
- // is accessible)
- pTop = Math.max(pTop, minTop);
- uiDialog.css({top: pTop, left: pLeft});
+ this.uiDialog.position({
+ my: pos.join(' '),
+ at: pos.join(' '),
+ of: window,
+ offset: offset.join(' '),
+ collision: 'fit'
+ });
},
_setData: function(key, value){
Download in other formats:
Original Format
File dialog-position.patch, 2.2 KB (added by scottgonzalez, July 24, 2009 08:27PM UTC)
Index: /Users/sgonzale/Documents/workspace/jQuery UI/ui/ui.dialog.js
===================================================================
--- /Users/sgonzale/Documents/workspace/jQuery UI/ui/ui.dialog.js (revision 2970)
+++ /Users/sgonzale/Documents/workspace/jQuery UI/ui/ui.dialog.js (working copy)
@@ -10,6 +10,7 @@
* Depends:
* ui.core.js
* ui.draggable.js
+ * ui.position.js
* ui.resizable.js
*/
(function($) {
@@ -377,55 +378,26 @@
},
_position: function(pos) {
- var wnd = $(window), doc = $(document),
- pTop = doc.scrollTop(), pLeft = doc.scrollLeft(),
- minTop = pTop,
- uiDialog = this.uiDialog;
-
- if ($.inArray(pos, ['center','top','right','bottom','left']) >= 0) {
- pos = [
- pos == 'right' || pos == 'left' ? pos : 'center',
- pos == 'top' || pos == 'bottom' ? pos : 'middle'
- ];
+ var offset = [0, 0];
+ pos = $.isArray(pos) ? pos : pos.split(' ');
+ if (pos.length == 1) {
+ pos[1] = pos[0];
}
- if (pos.constructor != Array) {
- pos = ['center', 'middle'];
- }
- if (pos[0].constructor == Number) {
- pLeft += pos[0];
- } else {
- switch (pos[0]) {
- case 'left':
- pLeft += 0;
- break;
- case 'right':
- pLeft += wnd.width() - uiDialog.outerWidth();
- break;
- default:
- case 'center':
- pLeft += (wnd.width() - uiDialog.outerWidth()) / 2;
+
+ $.each(['left', 'top'], function(i, offsetPosition) {
+ if (typeof pos[i] == 'number') {
+ offset[i] = pos[i];
+ pos[i] = offsetPosition;
}
- }
- if (pos[1].constructor == Number) {
- pTop += pos[1];
- } else {
- switch (pos[1]) {
- case 'top':
- pTop += 0;
- break;
- case 'bottom':
- pTop += wnd.height() - uiDialog.outerHeight();
- break;
- default:
- case 'middle':
- pTop += (wnd.height() - uiDialog.outerHeight()) / 2;
- }
- }
+ });
- // prevent the dialog from being too high (make sure the titlebar
- // is accessible)
- pTop = Math.max(pTop, minTop);
- uiDialog.css({top: pTop, left: pLeft});
+ this.uiDialog.position({
+ my: pos.join(' '),
+ at: pos.join(' '),
+ of: window,
+ offset: offset.join(' '),
+ collision: 'fit'
+ });
},
_setData: function(key, value){