Fixed some edge cases for popover triggering

This commit is contained in:
n1474335 2017-08-01 19:23:30 +00:00
parent a15034b03e
commit e8e5eb9c53
3 changed files with 22 additions and 10 deletions

View file

@ -155,9 +155,20 @@ OperationsWaiter.prototype.getSelectedOp = function(ops) {
*/
OperationsWaiter.prototype.opListCreate = function(e) {
this.manager.recipe.createSortableSeedList(e.target);
// Allows popover to gain focus for eg. pressing buttons/scrolling
$(".operation").popover({trigger: "manual", html: true, animation: true})
.on("mouseenter", function () {
this.enableOpsListPopovers(e.target);
};
/**
* Sets up popovers, allowing the popover itself to gain focus which enables scrolling
* and other interactions.
*
* @param {Element} el - The element to start selecting from
*/
OperationsWaiter.prototype.enableOpsListPopovers = function(el) {
$(el).find("[data-toggle=popover]").addBack("[data-toggle=popover]")
.popover({trigger: "manual"})
.on("mouseenter", function() {
const _this = this;
$(this).popover("show");
$(".popover").on("mouseleave", function () {
@ -165,8 +176,10 @@ OperationsWaiter.prototype.opListCreate = function(e) {
});
}).on("mouseleave", function () {
const _this = this;
setTimeout(function () {
if (!$(".popover:hover").length) {
setTimeout(function() {
// Determine if the popover associated with this element is being hovered over
if ($(_this).data("bs.popover") &&
!$(_this).data("bs.popover").$tip.is(":hover")) {
$(_this).popover("hide");
}
}, 50);