Side navigation
#1876 closed enhancement (fixed)
Opened November 01, 2007 02:29AM UTC
Closed December 08, 2007 03:46PM UTC
ui.dialog.js - Dialog Positioning Improvement
| Reported by: | ALLPRO | Owned by: | rworth |
|---|---|---|---|
| Priority: | minor | Milestone: | 1.2.2 |
| Component: | ui | Version: | 1.2.1 |
| Keywords: | dialog | Cc: | |
| Blocked by: | Blocking: |
Description
The current code for positioning a dialog window does not work if the dialog source DIV is 'hidden', which is likely to be a common way of using the dialog component. (I put my dialogs inside a hidden container div.) The problem is that you cannot 'measure' a div that is not displayed. This prevents the proper positioning of the dialog, such as 'center'.
There is a very simple solution - set...
display: block; visibility: hidden
...before measuring width and height. This allows dimensions to be taken without making the DIV visible.
Here is the modified 'open' code - only the first and last lines are new...
this.open = function() {
uiDialog.appendTo('body')'''.css({ visibility: 'hidden' })'''.show();
var wnd = $(window), top = 0, left = 0;
switch (options.position) {
case 'center':
top = (wnd.height() / 2) - (uiDialog.height() / 2);
left = (wnd.width() / 2) - (uiDialog.width() / 2);
break;
case 'left':
top = (wnd.height() / 2) - (uiDialog.height() / 2);
left = 0;
break;
case 'top':
top = 0;
left = (wnd.width() / 2) - (uiDialog.width() / 2);
break;
}
uiDialog.css({ top: top, left: left, visibility: 'visible' });
};
Attachments (0)
Change History (3)
Changed November 01, 2007 02:36AM UTC by comment:1
Changed November 19, 2007 02:03PM UTC by comment:2
| owner: | → rworth |
|---|
Changed December 08, 2007 03:46PM UTC by comment:3
| resolution: | → fixed |
|---|---|
| status: | new → closed |
This seems to be working as of [4079]. Added a test to http://dev.jquery.com/view/trunk/ui/current/tests/uiTest.dialog.html for regressions.
NOTE: There is a typo in the code line above. I tried to bold a block of 'code', but it added the "' formatting code for bolding to the string instead. The first line should read:
uiDialog.appendTo('body').css({ visibility: 'hidden' }).show();