Revision: 12462
Author:
cagatay...@gmail.com
Date: Fri Apr 10 09:04:07 2015 UTC
Log: PositionType option for Dialog
https://code.google.com/p/primefaces/source/detail?r=12462
Modified:
/primefaces/trunk/src/main/java/org/primefaces/component/dialog/DialogRenderer.java
/primefaces/trunk/src/main/resources/META-INF/resources/primefaces/dialog/dialog.css
/primefaces/trunk/src/main/resources/META-INF/resources/primefaces/dialog/dialog.js
/primefaces/trunk/src/main/resources-maven-jsf/ui/dialog.xml
=======================================
---
/primefaces/trunk/src/main/java/org/primefaces/component/dialog/DialogRenderer.java
Tue Dec 23 14:27:25 2014 UTC
+++
/primefaces/trunk/src/main/java/org/primefaces/component/dialog/DialogRenderer.java
Fri Apr 10 09:04:07 2015 UTC
@@ -86,6 +86,7 @@
protected void encodeMarkup(FacesContext context, Dialog dialog)
throws IOException {
ResponseWriter writer = context.getResponseWriter();
String clientId = dialog.getClientId(context);
+ String positionType = dialog.getPositionType();
String style = dialog.getStyle();
String styleClass = dialog.getStyleClass();
styleClass = styleClass == null ? Dialog.CONTAINER_CLASS :
Dialog.CONTAINER_CLASS + " " + styleClass;
@@ -93,6 +94,10 @@
if(ComponentUtils.isRTL(context, dialog)) {
styleClass += " ui-dialog-rtl";
}
+
+ if(positionType.equals("absolute")) {
+ styleClass += " ui-dialog-absolute";
+ }
writer.startElement("div", null);
writer.writeAttribute("id", clientId, null);
=======================================
---
/primefaces/trunk/src/main/resources/META-INF/resources/primefaces/dialog/dialog.css
Thu Mar 5 21:43:44 2015 UTC
+++
/primefaces/trunk/src/main/resources/META-INF/resources/primefaces/dialog/dialog.css
Fri Apr 10 09:04:07 2015 UTC
@@ -1,4 +1,5 @@
.ui-dialog { position: fixed; padding: 0; overflow: hidden; display:none; }
+.ui-dialog.ui-dialog-absolute { position: absolute; }
.ui-dialog.ui-overlay-hidden {display:block;}
.ui-dialog .ui-dialog-titlebar { padding: .4em .4em .4em 1em; position:
relative; border:0px; }
.ui-dialog .ui-dialog-title { float: left; margin: .3em 16px .1em 0; }
=======================================
---
/primefaces/trunk/src/main/resources/META-INF/resources/primefaces/dialog/dialog.js
Sat Mar 7 09:44:16 2015 UTC
+++
/primefaces/trunk/src/main/resources/META-INF/resources/primefaces/dialog/dialog.js
Fri Apr 10 09:04:07 2015 UTC
@@ -14,6 +14,7 @@
this.minimizeIcon =
this.titlebar.children('.ui-dialog-titlebar-minimize');
this.maximizeIcon =
this.titlebar.children('.ui-dialog-titlebar-maximize');
this.blockEvents = 'focus.' +
this.id + ' mousedown.' +
this.id
+ ' mouseup.' +
this.id;
+ this.cfg.absolutePositioned =
this.jq.hasClass('ui-dialog-absolute');
//configuration
this.cfg.width = this.cfg.width||'auto';
@@ -204,6 +205,13 @@
_show: function() {
this.moveToTop();
+
+ //offset
+ if(this.cfg.absolutePositioned) {
+ var winScrollTop = $(window).scrollTop();
+ this.jq.css('top', parseFloat(this.jq.css('top')) +
(winScrollTop - this.lastScrollTop) + 'px');
+ this.lastScrollTop = winScrollTop;
+ }
if(this.cfg.showEffect) {
var $this = this;
@@ -360,6 +368,8 @@
},
initPosition: function() {
+ var $this = this;
+
//reset
this.jq.css({left:0,top:0});
@@ -374,8 +384,15 @@
//make sure dialog stays in viewport
,using: function(pos) {
var l = pos.left < 0 ? 0 : pos.left,
- t = pos.top < 0 ? 0 : pos.top;
-
+ t = pos.top < 0 ? 0 : pos.top,
+ scrollTop = $(window).scrollTop();
+
+ //offset
+ if($this.cfg.absolutePositioned) {
+ t += scrollTop;
+ $this.lastScrollTop = scrollTop;
+ }
+
$(this).css({
left: l
,top: t
=======================================
--- /primefaces/trunk/src/main/resources-maven-jsf/ui/dialog.xml Sun Feb 16
22:18:20 2014 UTC
+++ /primefaces/trunk/src/main/resources-maven-jsf/ui/dialog.xml Fri Apr 10
09:04:07 2015 UTC
@@ -205,6 +205,13 @@
<description>Dialog size might exceeed viewport if content is
bigger than viewport in terms of height. fitViewport option automatically
adjusts height to fit dialog within the viewport.</description>
</attribute>
+ <attribute>
+ <name>positionType</name>
+ <required>false</required>
+ <type>java.lang.String</type>
+ <defaultValue>fixed</defaultValue>
+ <description>Defines whether dialog will be kept in viewport
on scroll (fixed) or keep its position (absolute). Default is
fixed.</description>
+ </attribute>
</attributes>
<resources>
<resource>