devexpress-richedit
Version:
DevExpress Rich Text Editor is an advanced word-processing tool designed for working with rich text documents.
37 lines (36 loc) • 1.11 kB
JavaScript
export class FocusHelper {
static preventFocusOnClick(element) {
return new FocusBlocker(element);
}
}
class FocusBlocker {
constructor(target) {
this.target = target;
this.onPointerDownBinded = this.onPointerDown.bind(this);
this.addEventListeners(target);
}
addEventListeners(element) {
element.addEventListener("pointerdown", this.onPointerDownBinded);
}
removeEventListeners(element) {
element.removeEventListener("pointerdown", this.onPointerDownBinded);
}
onPointerDown(event) {
for (const element of event.composedPath()) {
if (!(element instanceof HTMLElement))
continue;
if (element === this.target) {
event.preventDefault();
break;
}
if (!this.target.contains(element) || element.tabIndex > -1)
break;
}
}
dispose() {
if (this.target) {
this.removeEventListeners(this.target);
this.target = null;
}
}
}