mj-context-menu
Version:
A generic context menu
77 lines • 2.34 kB
JavaScript
import { KEY } from './key_navigatable.js';
import { MOUSE } from './mouse_navigatable.js';
export class AbstractNavigatable {
constructor() {
this.bubble = false;
}
bubbleKey() {
this.bubble = true;
}
keydown(event) {
switch (event.keyCode) {
case KEY.ESCAPE:
this.escape(event);
break;
case KEY.RIGHT:
this.right(event);
break;
case KEY.LEFT:
this.left(event);
break;
case KEY.UP:
this.up(event);
break;
case KEY.DOWN:
this.down(event);
break;
case KEY.RETURN:
case KEY.SPACE:
this.space(event);
break;
default:
return;
}
this.bubble ? (this.bubble = false) : this.stop(event);
}
escape(_event) { }
space(_event) { }
left(_event) { }
right(_event) { }
up(_event) { }
down(_event) { }
stop(event) {
if (event) {
event.stopPropagation();
event.preventDefault();
event.cancelBubble = true;
}
}
mousedown(event) {
return this.stop(event);
}
mouseup(event) {
return this.stop(event);
}
mouseover(event) {
return this.stop(event);
}
mouseout(event) {
return this.stop(event);
}
click(event) {
return this.stop(event);
}
addEvents(element) {
element.addEventListener(MOUSE.DOWN, this.mousedown.bind(this));
element.addEventListener(MOUSE.UP, this.mouseup.bind(this));
element.addEventListener(MOUSE.OVER, this.mouseover.bind(this));
element.addEventListener(MOUSE.OUT, this.mouseout.bind(this));
element.addEventListener(MOUSE.CLICK, this.click.bind(this));
element.addEventListener('keydown', this.keydown.bind(this));
element.addEventListener('dragstart', this.stop.bind(this));
element.addEventListener(MOUSE.SELECTSTART, this.stop.bind(this));
element.addEventListener('contextmenu', this.stop.bind(this));
element.addEventListener(MOUSE.DBLCLICK, this.stop.bind(this));
}
}
//# sourceMappingURL=abstract_navigatable.js.map