Page MenuHomestyx hydra

behavior-hovercard.js
No OneTemporary

behavior-hovercard.js

/**
* @provides javelin-behavior-phabricator-hovercards
* @requires javelin-behavior
* javelin-behavior-device
* javelin-stratcom
* javelin-vector
* phabricator-hovercard
* @javelin
*/
JX.behavior('phabricator-hovercards', function() {
// We listen for mousemove instead of mouseover to handle the case when user
// scrolls with keyboard. We don't want to display hovercard if node gets
// under the mouse cursor randomly placed somewhere on the screen. This
// unfortunately doesn't work in Google Chrome which triggers both mousemove
// and mouseover in this case but works in other browsers.
JX.Stratcom.listen(
'mousemove',
'hovercard',
function (e) {
if (JX.Device.getDevice() != 'desktop') {
return;
}
var data = e.getNodeData('hovercard');
JX.Hovercard.show(
e.getNode('hovercard'),
data.hoverPHID);
});
JX.Stratcom.listen(
'mousemove',
null,
function (e) {
if (!JX.Hovercard.getCard()) {
return;
}
var root = JX.Hovercard.getAnchor();
var node = JX.Hovercard.getCard();
// TODO: Add southern cases here, too
var mouse = JX.$V(e);
var node_pos = JX.$V(node);
var node_dim = JX.Vector.getDim(node);
var root_pos = JX.$V(root);
var root_dim = JX.Vector.getDim(root);
var margin = 20;
// Cursor is above the node.
if (mouse.y < node_pos.y - margin) {
JX.Hovercard.hide();
}
// Cursor is below the root.
if (mouse.y > root_pos.y + root_dim.y + margin) {
JX.Hovercard.hide();
}
// Cursor is too far to the left.
if (mouse.x < Math.min(root_pos.x, node_pos.x) - margin) {
JX.Hovercard.hide();
}
// Cursor is too far to the right.
if (mouse.x >
Math.max(root_pos.x + root_dim.x, node_pos.x + node_dim.x) + margin) {
JX.Hovercard.hide();
}
});
// When we leave the page, hide any visible hovercards. If we don't do this,
// clicking a link with a hovercard and then hitting "back" will give you a
// phantom card. We also hide cards if the window resizes.
JX.Stratcom.listen(
['unload', 'onresize'],
null,
function() {
JX.Hovercard.hide();
});
});

File Metadata

Mime Type
text/plain
Expires
Wed, Feb 4, 3:18 AM (1 d, 5 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
689726
Default Alt Text
behavior-hovercard.js (2 KB)

Event Timeline