Tether has a module system which can be used to modify Tether's positioning, or just do something each time the Tether is moved.
Tether has an array called Tether.modules, push onto it to add a module:
Tether.modules.push
position: ({top, left}) ->
top += 10
{top, left}
Your position function can either return a new object with top and left, null/undefined to leave the coordinates unchanged, or
false to cancel the positioning.
The position function is passed an object with the following elements:
{
left, // The element's new position, from the top left corner of the page
top,
targetAttachment, // The targetAttachment, with 'auto' resolved to an actual attachment
targetPos, // The coordinates of the target
attachment, // The attachment, as passed in the option
elementPos, // The coordinates of the element
offset, // The offset, after it's converted into pixels and the manual offset is added
targetOffset, // The attachment is converted into an offset and is included in these values
manualOffset, // The manual offset, in pixels
manualTargetOffset
}
It is called with the Tether instance as its context (this).
Modules can also have an initialize function which will be called when a new tether is created. The initialize function
is also called with the Tether instance as its context.
Tether.modules.push
initialize: ->
console.log "New Tether Created!", @
Constraints and shift are both implemented as modules. Mark Attachment is used by the docs.