Skip to content
This repository has been archived by the owner on Jun 14, 2020. It is now read-only.

Commit

Permalink
Fixed wrong Viewport plugin path and recompile dist
Browse files Browse the repository at this point in the history
  • Loading branch information
Craga89 committed Aug 4, 2012
1 parent 9ba46c5 commit cc938ee
Show file tree
Hide file tree
Showing 3 changed files with 114 additions and 2 deletions.
112 changes: 112 additions & 0 deletions dist/jquery.qtip.js
Expand Up @@ -3046,6 +3046,118 @@ $.extend(TRUE, QTIP.defaults, {
});


PLUGINS.viewport = function(api, position, posOptions, targetWidth, targetHeight, elemWidth, elemHeight)
{
var target = posOptions.target,
tooltip = api.elements.tooltip,
my = posOptions.my,
at = posOptions.at,
adjust = posOptions.adjust,
method = adjust.method.split(' '),
methodX = method[0],
methodY = method[1] || method[0],
viewport = posOptions.viewport,
container = posOptions.container,
cache = api.cache,
tip = api.plugins.tip,
adjusted = { left: 0, top: 0 },
fixed, newMy, newClass;

// If viewport is not a jQuery element, or it's the window/document or no adjustment method is used... return
if(!viewport.jquery || target[0] === window || target[0] === document.body || adjust.method === 'none') {
return adjusted;
}

// Cache our viewport details
fixed = tooltip.css('position') === 'fixed';
viewport = {
elem: viewport,
height: viewport[ (viewport[0] === window ? 'h' : 'outerH') + 'eight' ](),
width: viewport[ (viewport[0] === window ? 'w' : 'outerW') + 'idth' ](),
scrollleft: fixed ? 0 : viewport.scrollLeft(),
scrolltop: fixed ? 0 : viewport.scrollTop(),
offset: viewport.offset() || { left: 0, top: 0 }
};
container = {
elem: container,
scrollLeft: container.scrollLeft(),
scrollTop: container.scrollTop(),
offset: container.offset() || { left: 0, top: 0 }
};

// Generic calculation method
function calculate(side, otherSide, type, adjust, side1, side2, lengthName, targetLength, elemLength) {
var initialPos = position[side1],
mySide = my[side], atSide = at[side],
isShift = type === SHIFT,
viewportScroll = -container.offset[side1] + viewport.offset[side1] + viewport['scroll'+side1],
myLength = mySide === side1 ? elemLength : mySide === side2 ? -elemLength : -elemLength / 2,
atLength = atSide === side1 ? targetLength : atSide === side2 ? -targetLength : -targetLength / 2,
tipLength = tip && tip.size ? tip.size[lengthName] || 0 : 0,
tipAdjust = tip && tip.corner && tip.corner.precedance === side && !isShift ? tipLength : 0,
overflow1 = viewportScroll - initialPos + tipAdjust,
overflow2 = initialPos + elemLength - viewport[lengthName] - viewportScroll + tipAdjust,
offset = myLength - (my.precedance === side || mySide === my[otherSide] ? atLength : 0) - (atSide === CENTER ? targetLength / 2 : 0);

// shift
if(isShift) {
tipAdjust = tip && tip.corner && tip.corner.precedance === otherSide ? tipLength : 0;
offset = (mySide === side1 ? 1 : -1) * myLength - tipAdjust;

// Adjust position but keep it within viewport dimensions
position[side1] += overflow1 > 0 ? overflow1 : overflow2 > 0 ? -overflow2 : 0;
position[side1] = Math.max(
-container.offset[side1] + viewport.offset[side1] + (tipAdjust && tip.corner[side] === CENTER ? tip.offset : 0),
initialPos - offset,
Math.min(
Math.max(-container.offset[side1] + viewport.offset[side1] + viewport[lengthName], initialPos + offset),
position[side1]
)
);
}

// flip/flipinvert
else {
// Update adjustment amount depending on if using flipinvert or flip
adjust *= (type === FLIPINVERT ? 2 : 0);

// Check for overflow on the left/top
if(overflow1 > 0 && (mySide !== side1 || overflow2 > 0)) {
position[side1] -= offset + adjust;
newMy['invert'+side](side1);
}

// Check for overflow on the bottom/right
else if(overflow2 > 0 && (mySide !== side2 || overflow1 > 0) ) {
position[side1] -= (mySide === CENTER ? -offset : offset) + adjust;
newMy['invert'+side](side2);
}

// Make sure we haven't made things worse with the adjustment and reset if so
if(position[side1] < viewportScroll && -position[side1] > overflow2) {
position[side1] = initialPos; newMy = undefined;
}
}

return position[side1] - initialPos;
}

// Set newMy if using flip or flipinvert methods
if(methodX !== 'shift' || methodY !== 'shift') { newMy = my.clone(); }

// Adjust position based onviewport and adjustment options
adjusted = {
left: methodX !== 'none' ? calculate( X, Y, methodX, adjust.x, LEFT, RIGHT, WIDTH, targetWidth, elemWidth ) : 0,
top: methodY !== 'none' ? calculate( Y, X, methodY, adjust.y, TOP, BOTTOM, HEIGHT, targetHeight, elemHeight ) : 0
};

// Set tooltip position class if it's changed
if(newMy && cache.lastClass !== (newClass = uitooltip + '-pos-' + newMy.abbrev())) {
tooltip.removeClass(api.cache.lastClass).addClass( (api.cache.lastClass = newClass) );
}

return adjusted;
};
PLUGINS.imagemap = function(api, area, corner, adjustMethod)
{
if(!area.jquery) { area = $(area); }
Expand Down

0 comments on commit cc938ee

Please sign in to comment.