dragresize over iframe fix function concept (#3157)

Fixes stuttering of conversejs overlayed dragresize UI elements over the iframes on the parent page.
This commit is contained in:
drlight17 2023-03-03 13:52:24 +03:00 committed by GitHub
parent 6b365458f5
commit c3c666e568
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 0 deletions

View File

@ -7,6 +7,7 @@
- Fix `autojoin` checkbox state in MUC bookmark form
- Remove call to `api.confirm` in `@converse/headless`
- Generate TypeScript declaration files into `dist/types`
- #3156: Add function to prevent drag stutter effect over iframes when resize is called in overlay mode
## 10.1.2 (2023-02-17)

View File

@ -67,8 +67,31 @@ converse.plugins.add('converse-dragresize', {
document.removeEventListener('mouseup', onMouseUp);
}
/**
* This function registers mousedown and mouseup events hadlers to
* all iframes in the DOM when converse UI resizing events are called
* to prevent mouse drag stutter effect which is bad user experience.
* @function dragresizeOverIframeHandler
* @param {Object} e - dragging node element.
*/
function dragresizeOverIframeHandler (e) {
const iframes = document.getElementsByTagName('iframe');
for (let iframe of iframes) {
e.addEventListener('mousedown', () => {
iframe.style.pointerEvents = 'none';
}, { once: true });
e.addEventListener('mouseup', () => {
iframe.style.pointerEvents = 'initial';
}, { once: true });
}
}
api.listen.on('registeredGlobalEventHandlers', registerGlobalEventHandlers);
api.listen.on('unregisteredGlobalEventHandlers', unregisterGlobalEventHandlers);
api.listen.on('beforeShowingChatView', view => view.initDragResize().setDimensions());
api.listen.on('startDiagonalResize', dragresizeOverIframeHandler);
api.listen.on('startHorizontalResize', dragresizeOverIframeHandler);
api.listen.on('startVerticalResize', dragresizeOverIframeHandler);
}
});