Merge branch 'patch-1' of git://github.com/belerweb/x-editable into belerweb-patch-1
This commit is contained in:
commit
c94fdf2438
@ -67,7 +67,11 @@
|
||||
, actualWidth
|
||||
, actualHeight
|
||||
, placement
|
||||
, tp;
|
||||
, tp
|
||||
, tpt
|
||||
, tpb
|
||||
, tpl
|
||||
, tpr;
|
||||
|
||||
placement = typeof this.options.placement === 'function' ?
|
||||
this.options.placement.call(this, $tip[0], this.$element[0]) :
|
||||
@ -87,20 +91,80 @@
|
||||
actualWidth = $tip[0].offsetWidth;
|
||||
actualHeight = $tip[0].offsetHeight;
|
||||
|
||||
switch (inside ? placement.split(' ')[1] : placement) {
|
||||
case 'bottom':
|
||||
tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2};
|
||||
break;
|
||||
case 'top':
|
||||
tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2};
|
||||
break;
|
||||
case 'left':
|
||||
tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth};
|
||||
break;
|
||||
case 'right':
|
||||
tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width};
|
||||
break;
|
||||
}
|
||||
placement = inside ? placement.split(' ')[1] : placement;
|
||||
|
||||
tpb = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
|
||||
tpt = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
|
||||
tpl = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
|
||||
tpr = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
|
||||
|
||||
switch (placement) {
|
||||
case 'bottom':
|
||||
if ((tpb.top + actualHeight) > ($(window).scrollTop() + $(window).height())) {
|
||||
if (tpt.top > $(window).scrollTop()) {
|
||||
placement = 'top'
|
||||
} else if ((tpr.left + actualWidth) < ($(window).scrollLeft() + $(window).width())) {
|
||||
placement = 'right'
|
||||
} else if (tpl.left > $(window).scrollLeft()) {
|
||||
placement = 'left'
|
||||
} else {
|
||||
placement = 'right'
|
||||
}
|
||||
}
|
||||
break
|
||||
case 'top':
|
||||
if (tpt.top < $(window).scrollTop()) {
|
||||
if ((tpb.top + actualHeight) < ($(window).scrollTop() + $(window).height())) {
|
||||
placement = 'bottom'
|
||||
} else if ((tpr.left + actualWidth) < ($(window).scrollLeft() + $(window).width())) {
|
||||
placement = 'right'
|
||||
} else if (tpl.left > $(window).scrollLeft()) {
|
||||
placement = 'left'
|
||||
} else {
|
||||
placement = 'right'
|
||||
}
|
||||
}
|
||||
break
|
||||
case 'left':
|
||||
if (tpl.left < $(window).scrollLeft()) {
|
||||
if ((tpr.left + actualWidth) < ($(window).scrollLeft() + $(window).width())) {
|
||||
placement = 'right'
|
||||
} else if (tpt.top > $(window).scrollTop()) {
|
||||
placement = 'top'
|
||||
} else if (tpt.top > $(window).scrollTop()) {
|
||||
placement = 'bottom'
|
||||
} else {
|
||||
placement = 'right'
|
||||
}
|
||||
}
|
||||
break
|
||||
case 'right':
|
||||
if ((tpr.left + actualWidth) > ($(window).scrollLeft() + $(window).width())) {
|
||||
if (tpl.left > $(window).scrollLeft()) {
|
||||
placement = 'left'
|
||||
} else if (tpt.top > $(window).scrollTop()) {
|
||||
placement = 'top'
|
||||
} else if (tpt.top > $(window).scrollTop()) {
|
||||
placement = 'bottom'
|
||||
}
|
||||
}
|
||||
break
|
||||
}
|
||||
|
||||
switch (placement) {
|
||||
case 'bottom':
|
||||
tp = tpb;
|
||||
break
|
||||
case 'top':
|
||||
tp = tpt;
|
||||
break
|
||||
case 'left':
|
||||
tp = tpl;
|
||||
break
|
||||
case 'right':
|
||||
tp = tpr;
|
||||
break
|
||||
}
|
||||
|
||||
$tip
|
||||
.offset(tp)
|
||||
@ -112,4 +176,4 @@
|
||||
}
|
||||
});
|
||||
|
||||
}(window.jQuery));
|
||||
}(window.jQuery));
|
||||
|
Loading…
x
Reference in New Issue
Block a user