Author: nbelaevski
Date: 2009-03-26 20:27:23 -0400 (Thu, 26 Mar 2009)
New Revision: 13238
Modified:
trunk/ui/colorPicker/src/main/resources/org/richfaces/renderkit/html/scripts/ui.colorpicker.js
Log:
https://jira.jboss.org/jira/browse/RF-6594
Modified:
trunk/ui/colorPicker/src/main/resources/org/richfaces/renderkit/html/scripts/ui.colorpicker.js
===================================================================
---
trunk/ui/colorPicker/src/main/resources/org/richfaces/renderkit/html/scripts/ui.colorpicker.js 2009-03-26
23:44:14 UTC (rev 13237)
+++
trunk/ui/colorPicker/src/main/resources/org/richfaces/renderkit/html/scripts/ui.colorpicker.js 2009-03-27
00:27:23 UTC (rev 13238)
@@ -319,21 +319,35 @@
var top = 0;
var left = 0;
- var viewPort = this._getWindowScrollOffset();
- var window = this._getWindowDimensions();
- if(window.height - (this.element.offset().top - viewPort.scrollTop) <
this.picker.height()){
- top = this.element[0].offsetTop - this.picker.height();
- }else{
- top = this.element[0].offsetTop + this.element[0].offsetHeight;
+ this.picker.css({visibility: 'hidden'}).css({left: '0px', top:
'0px', display: 'block'});
+
+ var win = $(window);
+ var winWidth = win.width();
+ var winHeight = win.height();
+
+ var spanOffsets = this.element.offset();
+ var pickerOffsets = this.picker.offset();
+
+ left = spanOffsets.left - pickerOffsets.left;
+ top = spanOffsets.top - pickerOffsets.top;
+
+ var relLeft = spanOffsets.left - win.scrollLeft();
+ var relTop = spanOffsets.top - win.scrollTop();
+
+ if (relTop + this.picker.height() + this.element.height() > winHeight &&
relTop - this.picker.height() > 0) {
+ top -= this.picker.height();
+ } else {
+ top += this.element.height();
}
- if(window.width - (this.element.offset().left - viewPort.scrollLeft) <
this.picker.width()){
- left = this.element[0].offsetLeft - this.picker.width() +
this.element[0].offsetWidth;
- }else{
- left = this.element[0].offsetLeft;
- }
- this.picker.css({left: left + 'px', top: top + 'px'});
+ if (relLeft + this.picker.width() > winWidth && relLeft +
this.element.width() - this.picker.width() > 0) {
+ left += -this.picker.width() + this.element.width();
+ } else {
+ //left is ok
+ }
+
+ this.picker.css({left: left + 'px', top: top + 'px'}).css({visibility:
'visible'});
if (this._trigger("show", e, { options: this.options, hsb: this.color, hex:
this._HSBToHex(this.color), rgb: this._HSBToRGB(this.color) }) != false) {
this.picker.show();
}
@@ -344,30 +358,6 @@
},
- _getWindowDimensions: function() {
- var w = self.innerWidth
- || document.documentElement.clientWidth
- || document.body.clientWidth
- || 0;
- var h = self.innerHeight
- || document.documentElement.clientHeight
- || document.body.clientHeight
- || 0;
- return {width:w, height: h};
- },
-
- _getWindowScrollOffset: function() {
- var x = window.pageXOffset
- || document.documentElement.scrollLeft
- || document.body.scrollLeft
- || 0;
- var y = window.pageYOffset
- || document.documentElement.scrollTop
- || document.body.scrollTop
- || 0;
- return {scrollLeft:x, scrollTop:y};
- },
-
_hide: function(e) {
if (!this._isChildOf(this.picker[0], e.target, this.picker[0])) {