[Mobile] Gestures

Now to dismiss bubble, touch anywhere
the touch will not fire other gestures
(such as the pressing of another object).
This commit is contained in:
Shivam Dave 2015-08-04 13:41:48 -07:00
parent 3d524d7572
commit 66408eeec8
2 changed files with 23 additions and 15 deletions

View File

@ -39,7 +39,6 @@ define(
*/
function InfoGestureButton($document, agentService, infoService, element, domainObject) {
var dismissBubble,
pendingBubble,
touchPosition,
scopeOff,
body = $document.find('body');
@ -59,6 +58,7 @@ define(
dismissBubble();
dismissBubble = undefined;
}
// Detaches body touch listener
body.off('touchstart', hideBubble);
}
@ -68,17 +68,24 @@ define(
// and then on any body touch the bubble is dismissed
function showBubble(event) {
trackPosition(event);
// Show the bubble, but on any touchstart on the
// body (anywhere) call hidebubble
pendingBubble =
dismissBubble = infoService.display(
"info-table",
domainObject.getModel().name,
domainObject.useCapability('metadata'),
touchPosition
);
body.on('touchstart', hideBubble);
dismissBubble = infoService.display(
"info-table",
domainObject.getModel().name,
domainObject.useCapability('metadata'),
touchPosition
);
// On any touch on the body, default body touches/events
// are prevented, the bubble is dismissed, and the touchstart
// body event is unbound, reallowing gestures
body.on('touchstart', function (event) {
event.preventDefault();
hideBubble();
body.unbind('touchstart');
});
}
// Checks if you are on a mobile device, if the device is

View File

@ -61,10 +61,11 @@ define(
// info bubble positioned as normal (with triangle pointing
// to where clicked or pressed)
bubble.css('position', 'absolute');
if(agentService.isPhone(navigator.userAgent)) {
bubble.css('right', 5 + 'px');
bubble.css('left', 5 + 'px');
bubble.css('top', 40 + 'px');
if (agentService.isPhone(navigator.userAgent)) {
bubble.css('right', 0 + 'px');
bubble.css('left', 0 + 'px');
bubble.css('top', 'auto');
bubble.css('bottom', 25 + 'px');
} else {
if (goLeft) {
bubble.css('right', (winDim[0] - position[0] + OFFSET[0]) + 'px');
@ -79,7 +80,7 @@ define(
}
// Add the menu to the body
body.append(bubble);
// Return a function to dismiss the bubble
return function () { bubble.remove(); };
}