add sticky option to popHover. checkpoint belt anchors

This commit is contained in:
Stewart Allen 2021-01-28 21:46:41 -05:00
commit d48e001e1e
4 changed files with 87 additions and 40 deletions

View file

@ -2099,10 +2099,10 @@
UC.hoverPop(UI.ltfile, { group: ltpops, target: $('file-pop') });
UC.hoverPop(UI.ltview, { group: ltpops, target: $('pop-view') });
UC.hoverPop(UI.ltact, { group: ltpops, target: $('pop-slice') });
UC.hoverPop(UI.render, { group: ltpops, target: $('pop-render') });
UC.hoverPop(UI.rotate, { group: ltpops, target: $('pop-rotate') });
UC.hoverPop(UI.scale, { group: ltpops, target: $('pop-scale') });
UC.hoverPop(UI.nozzle, { group: ltpops, target: $('pop-nozzle') });
UC.hoverPop(UI.render, { group: ltpops, target: $('pop-render'), sticky: true });
UC.hoverPop(UI.rotate, { group: ltpops, target: $('pop-rotate'), sticky: true });
UC.hoverPop(UI.scale, { group: ltpops, target: $('pop-scale'), sticky: true });
UC.hoverPop(UI.nozzle, { group: ltpops, target: $('pop-nozzle'), sticky: true });
UC.onBlur([
UI.toolName,

View file

@ -891,26 +891,42 @@
let group = opt.group || [];
let closes = opt.closes || group;
let target = opt.target || el;
let popped = false;
group.push(target);
if (closes !== group) {
closes.push(target);
}
el.addEventListener("mouseenter", (ev) => {
let openit = () => {
clearTimeout(closes.timer);
for (let close of closes) {
close.classList.remove("hoverpop");
}
target.classList.add("hoverpop");
});
popped = true;
};
let closeit = () => {
target.classList.remove("hoverpop");
clearTimeout(closes.timer);
popped = false;
};
el.addEventListener("mouseenter", openit);
el.addEventListener("mouseleave", (ev) => {
closes.timer = setTimeout(() => {
target.classList.remove("hoverpop");
}, 750);
});
if (!opt.sticky) {
el.addEventListener("mouseup", (ev) => {
if (popped) {
closeit();
} else {
openit();
}
});
}
document.addEventListener("keydown", (ev) => {
if (ev.keyCode === 27 || ev.code === 'Escape') {
target.classList.remove("hoverpop");
clearTimeout(closes.timer);
closeit();
}
});
}