feat(elements): multiselect

This commit is contained in:
moklick
2020-10-22 00:03:30 +02:00
parent 13a3fd46b1
commit 65a1b5e07a
7 changed files with 58 additions and 8 deletions
+11 -1
View File
@@ -7,15 +7,20 @@ import { Elements } from '../types';
interface HookParams {
deleteKeyCode: number;
multiSelectionKeyCode: number;
onElementsRemove?: (elements: Elements) => void;
}
export default ({ deleteKeyCode, onElementsRemove }: HookParams): void => {
export default ({ deleteKeyCode, multiSelectionKeyCode, onElementsRemove }: HookParams): void => {
const selectedElements = useStoreState((state) => state.selectedElements);
const edges = useStoreState((state) => state.edges);
const unsetNodesSelection = useStoreActions((actions) => actions.unsetNodesSelection);
const setMultiSelectionActive = useStoreActions((actions) => actions.setMultiSelectionActive);
const resetSelectedElements = useStoreActions((actions) => actions.resetSelectedElements);
const deleteKeyPressed = useKeyPress(deleteKeyCode);
const multiSelectionKeyPressed = useKeyPress(multiSelectionKeyCode);
useEffect(() => {
if (onElementsRemove && deleteKeyPressed && selectedElements) {
@@ -30,6 +35,11 @@ export default ({ deleteKeyCode, onElementsRemove }: HookParams): void => {
onElementsRemove(elementsToRemove);
unsetNodesSelection();
resetSelectedElements();
}
}, [deleteKeyPressed]);
useEffect(() => {
setMultiSelectionActive(multiSelectionKeyPressed);
}, [multiSelectionKeyPressed])
};