draggable splitter on mainscreen

This commit is contained in:
Jan Prochazka
2021-02-28 09:27:57 +01:00
parent 1c0a8cad56
commit f30bd0a894
6 changed files with 77 additions and 6 deletions

View File

@@ -1,7 +1,7 @@
export function clickOutside(node) {
export default function clickOutside(node) {
const handleClick = event => {
if (node && !node.contains(event.target) && !event.defaultPrevented) {
node.dispatchEvent(new CustomEvent('clickOutside', node));
node.dispatchEvent(new CustomEvent('clickOutside'));
}
};

View File

@@ -0,0 +1,38 @@
export default function splitterDrag(node, axes) {
let resizeStart = null;
const handleResizeDown = e => {
resizeStart = e[axes];
document.addEventListener('mousemove', handleResizeMove, true);
document.addEventListener('mouseup', handleResizeEnd, true);
};
const handleResizeMove = e => {
e.preventDefault();
const diff = e[axes] - resizeStart;
resizeStart = e[axes];
node.dispatchEvent(
new CustomEvent('resizeSplitter', {
detail: diff,
})
);
};
const handleResizeEnd = e => {
e.preventDefault();
resizeStart = null;
document.removeEventListener('mousemove', handleResizeMove, true);
document.removeEventListener('mouseup', handleResizeEnd, true);
};
node.addEventListener('mousedown', handleResizeDown);
return {
destroy() {
node.removeEventListener('mousedown', handleResizeDown);
if (resizeStart != null) {
document.removeEventListener('mousemove', handleResizeMove, true);
document.removeEventListener('mouseup', handleResizeEnd, true);
}
},
};
}