Get position from passed event|object

This commit is contained in:
Jiiks 2018-08-22 01:27:50 +03:00
parent 8637f176c1
commit ef5a1c223c
2 changed files with 7 additions and 8 deletions

View File

@ -33,18 +33,14 @@
methods: {
calculatePosition() {
if (!this.activeMenu.menu.groups.length) return {};
this.mouseX = this.activeMenu.menu.x;
this.mouseY = this.activeMenu.menu.y;
const height = this.activeMenu.menu.groups.reduce((total, group) => total + group.items.length, 0) * 28;
this.top = window.innerHeight - this.mouseY - height < 0 ? this.mouseY - height : this.mouseY;
this.left = window.innerWidth - this.mouseX - 170 < 0 ? this.mouseX - 170 : this.mouseX;
this.renderLeft = (this.left + 170 * 2) > window.innerWidth;
return { top: `${this.top}px`, left: `${this.left}px` };
}
},
mounted() {
window.addEventListener('contextmenu', e => {
this.mouseX = e.clientX;
this.mouseY = e.clientY;
});
}
}
</script>

View File

@ -12,10 +12,13 @@ export class BdContextMenu {
/**
* Show a context menu
* @param {MouseEvent|Object} e MouseEvent or Object { x: 0, y: 0 }
* @param {Object[]} grops Groups of items to show in context menu
*/
static show(groups) {
this.activeMenu.menu = { groups };
static show(e, groups) {
const x = e.x || e.clientX;
const y = e.y || e.clientY;
this.activeMenu.menu = { x, y, groups };
}
static get activeMenu() {