myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Danny Robinson (JIRA)" <>
Subject [jira] Commented: (TRINIDAD-673) tr:panelPopup positions itself with regards to the document body, not the offset parent
Date Tue, 04 Sep 2007 17:54:44 GMT


Danny Robinson commented on TRINIDAD-673:

Line 626
    var pos = this._getEventPosition(popup);
should be
    var pos = this._getEventPosition(event);
fixed rev 572757.

> tr:panelPopup positions itself with regards to the document body, not the offset parent
> ---------------------------------------------------------------------------------------
>                 Key: TRINIDAD-673
>                 URL:
>             Project: MyFaces Trinidad
>          Issue Type: Bug
>          Components: Components
>    Affects Versions: 1.0.2-core
>            Reporter: Andrew Robinson
>            Assignee: Andrew Robinson
>             Fix For: 1.0.3-core
>         Attachments: popup.js
> I have been working for a large part of the day on my own renderer of the tr:panelPopup
as the core one unfortunately doesn't work for my needs. The problem is that the PanelPopup.js
assumes that the panel's offsetParent is the document.body/window. With CSS styling, this
is very rarely the case. As a result a tr:panelPopup inside of a relative or absolute HTML
element will not be rendered in the correct location on the screen. 
> Furthermore, the panel is often not visible if the parent's overflow is hidden. 
> Proposed solution:
> The best way to ensure that the popup is positioned correctly is to have all measurements
made using absolute (page) co-ordinates. Also, it is imperative to have the popup inside a
container that is not cropped or scrolling in any way to ensure the dialog stays visible.

> Steps:
> 1) When the popup is shown, move it to the parent FORM element (use the form to ensure
that form elements inside the popup do not break)
> 2) if the popup is not in a form, then relocate the popup to the document.body
> 3) have event listeners on the popup and the trigger.
> 4) in the mouse out, check to see if the events X and Y co-ordinates fall in the page
X and page Y co-ordinates of either the trigger or the popup. If the event is outside both
sets of co-ordinates, hide the popup
> 5) when hiding the popup, move it back to it's original parent
> Technical notes:
> - to determine absolute co-ordinates relative to the page, one must loop through all
the parent nodes, checking offsetTop and offsetLeft until the offsetParent is null

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message