Cleanup the hack

This commit is contained in:
Joe Fiorini 2015-02-03 17:12:25 -05:00
parent cef0d0bb00
commit 6e0399379d

View File

@ -489,8 +489,7 @@ angular.module('AWDirectives', ['RestServices', 'Utilities', 'AuthService', 'Job
container = (attrs.container !== undefined) ? attrs.container : false,
trigger = (attrs.trigger !== undefined) ? attrs.trigger : 'manual',
template = '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>',
id_to_close = "",
body_click_count;
id_to_close = "";
if (element[0].id) {
template = '<div id="' + element[0].id + '_popover_container" class="popover" role="tooltip"><div class="arrow"></div><h3 id="' + element[0].id + '_popover_title" class="popover-title"></h3><div id="' + element[0].id + '_popover_content" class="popover-content"></div></div>';
@ -522,7 +521,32 @@ angular.module('AWDirectives', ['RestServices', 'Utilities', 'AuthService', 'Job
});
}
$(element).attr('tabindex',-1);
$(element).click(function() {
$(element).one('click', showPopover);
$(element).on('shown.bs.popover', function() {
$('body').one('click.popover' + id_to_close, function(e) {
if ($(e.target).parents(id_to_close).length === 0) {
$(element).popover('hide');
}
});
$(document).on('keydown.popover', dismissOnEsc);
});
$(element).on('hidden.bs.popover', function() {
$(element).off('click', dismissPopover);
$(element).off('click', showPopover);
$('body').off('click.popover.' + id_to_close);
$(element).one('click', showPopover);
$(document).off('keydown.popover', dismissOnEsc);
});
function showPopover(e) {
console.log(element);
e.stopPropagation();
var self = $(this);
// remove tool-tip
@ -545,6 +569,7 @@ angular.module('AWDirectives', ['RestServices', 'Utilities', 'AuthService', 'Job
}
}
});
$('.popover').each(function() {
// remove lingering popover <div>. Seems to be a bug in TB3 RC1
$(this).remove();
@ -557,50 +582,30 @@ angular.module('AWDirectives', ['RestServices', 'Utilities', 'AuthService', 'Job
// set id_to_close of the actual open element
id_to_close = "#" + $(element).attr('id') + "_popover_container";
// set the number of times the body has been clicked since the popover has been opened
body_click_count = 0;
if ($._data(document.body, "events")) {
// in the case that the popOver is retriggered (ie: you click the question mark
// again for that popover. tread this as a toggle and do not bind another
// click event.
// PROBLEM NOTE: if things are bound to the body this might break.
$('body').off('click');
} else {
$('body').on('click', function(e) {
if ($(e.target).parents(id_to_close).length === 0) {
// if you click outside the popover
// increment the body click counter
body_click_count++;
if (body_click_count === 2) {
// if that counter was incremented to 2
// note this value is 2 because an initial fire
// needs to be taken into account when the modal opens...
// toggle the tooltip because this is actually
// the first click outside of the popOver since it has been open
$(element).popover('toggle');
$('body').off('click');
}
}
});
}
// $(element).one('click', dismissPopover);
$(this).popover('toggle');
$('.popover').each(function() {
$compile($(this))(scope); //make nested directives work!
});
});
}
$(document).bind('keydown', function(e) {
function dismissPopover(e) {
e.stopPropagation();
$(element).popover('hide');
}
function dismissOnEsc(e) {
if (e.keyCode === 27) {
$(element).popover('hide');
$('.popover').each(function() {
// remove lingering popover <div>. Seems to be a bug in TB3 RC1
$(this).remove();
// $(this).remove();
});
}
});
}
};
}])