fix: tool editor disappears when dragging words (#20271)

Co-authored-by: Mac Siri <mac@forem.com>
Co-authored-by: Anna Buianova <lightallloy@gmail.com>
This commit is contained in:
Lucas Mateus Batista Polles 2023-10-31 21:38:39 +00:00 committed by GitHub
parent b8038a388e
commit 59860df04a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 4 deletions

View file

@ -49,7 +49,7 @@ describe('drag and drop for components', () => {
result.current.setElement(document.createElement('textarea'));
});
expect(HTMLElement.prototype.addEventListener).toHaveBeenCalledTimes(4);
expect(HTMLElement.prototype.addEventListener).toHaveBeenCalledTimes(5);
expect(HTMLDocument.prototype.addEventListener).toHaveBeenCalledTimes(2);
});
@ -78,7 +78,7 @@ describe('drag and drop for components', () => {
2,
);
expect(HTMLElement.prototype.removeEventListener).toHaveBeenCalledTimes(
4,
5,
);
});
});
@ -115,7 +115,7 @@ describe('drag and drop for components', () => {
);
expect(HTMLDocument.prototype.addEventListener).toBeCalledTimes(2);
expect(HTMLElement.prototype.addEventListener).toHaveBeenCalledTimes(4);
expect(HTMLElement.prototype.addEventListener).toHaveBeenCalledTimes(5);
});
it('should not attach drag and drop events', async () => {
@ -151,7 +151,7 @@ describe('drag and drop for components', () => {
unmount();
expect(HTMLDocument.prototype.removeEventListener).toBeCalledTimes(2);
expect(HTMLElement.prototype.removeEventListener).toHaveBeenCalledTimes(
4,
5,
);
});

View file

@ -43,6 +43,7 @@ export function useDragAndDrop({ onDragOver, onDragExit, onDrop }) {
element.addEventListener('dragover', onDragOver);
element.addEventListener('dragexit', onDragExit);
element.addEventListener('dragleave', onDragExit);
element.addEventListener('dragend', onDragExit);
element.addEventListener('drop', onDrop);
return () => {
@ -52,6 +53,7 @@ export function useDragAndDrop({ onDragOver, onDragExit, onDrop }) {
element.removeEventListener('dragover', onDragOver);
element.removeEventListener('dragexit', onDragExit);
element.removeEventListener('dragleave', onDragExit);
element.removeEventListener('dragend', onDragExit);
element.removeEventListener('drop', onDrop);
};
}, [element, onDragOver, onDragExit, onDrop]);