Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit bad60f9

Browse files
Goamandmo-odoo
authored andcommitted
[FIX] FollowRange: prevent toolbar hide on click
1 parent ba224a2 commit bad60f9

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

packages/plugin-dom-follow-range/src/FollowRangeZoneDomObjectRenderer.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,14 @@ export class FollowRangeZoneDomObjectRenderer extends NodeRenderer<DomObject> {
6363
}
6464
} while (doc);
6565

66+
// If the selection goes into an input inside the jw-follow-range, do nothing.
67+
if (
68+
document.activeElement instanceof HTMLInputElement &&
69+
document.activeElement.closest('JW-FOLLOW-RANGE')
70+
) {
71+
return;
72+
}
73+
6674
if (selection.rangeCount && !isCollapsed) {
6775
if (container.parentElement.tagName !== 'BODY') {
6876
document.body.append(container);

packages/plugin-dom-layout/src/ActionableDomObjectRenderer.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ export class ActionableDomObjectRenderer extends NodeRenderer<DomObject> {
1717

1818
async render(button: ActionableNode): Promise<DomObjectActionable> {
1919
let updateButton: () => void;
20-
let handler: (ev: MouseEvent) => void;
20+
let clickHandler: (ev: MouseEvent) => void;
21+
let mousedownHandler: (ev: MouseEvent) => void;
2122
const objectButton: DomObjectActionable = {
2223
tag: 'BUTTON',
2324
attributes: {
@@ -29,17 +30,26 @@ export class ActionableDomObjectRenderer extends NodeRenderer<DomObject> {
2930
}
3031
},
3132
attach: (el: HTMLButtonElement): void => {
32-
handler = (ev): void => {
33+
clickHandler = (ev): void => {
3334
ev.stopImmediatePropagation();
35+
ev.stopPropagation();
36+
ev.preventDefault();
3437
objectButton.handler();
3538
};
36-
el.addEventListener('click', handler);
39+
mousedownHandler = (ev: MouseEvent): void => {
40+
ev.stopImmediatePropagation();
41+
ev.stopPropagation();
42+
ev.preventDefault();
43+
};
44+
el.addEventListener('click', clickHandler);
45+
el.addEventListener('mousedown', mousedownHandler);
3746
updateButton = this._updateButton.bind(this, button, el);
3847
updateButton();
3948
this.engine.editor.dispatcher.registerCommandHook('*', updateButton);
4049
},
4150
detach: (el: HTMLButtonElement): void => {
42-
el.removeEventListener('click', handler);
51+
el.removeEventListener('click', clickHandler);
52+
el.removeEventListener('mousedown', mousedownHandler);
4353
this.engine.editor.dispatcher.removeCommandHook('*', updateButton);
4454
},
4555
};

0 commit comments

Comments
 (0)