Added stop progagation to map controls to stop drawing empty shapes
This commit is contained in:
parent
5e2c178118
commit
aac11790e2
@ -1,4 +1,4 @@
|
|||||||
import React, { useState, Fragment } from "react";
|
import React, { useState, Fragment, useEffect, useRef } from "react";
|
||||||
import { IconButton, Flex, Box } from "theme-ui";
|
import { IconButton, Flex, Box } from "theme-ui";
|
||||||
|
|
||||||
import RadioIconButton from "./controls/RadioIconButton";
|
import RadioIconButton from "./controls/RadioIconButton";
|
||||||
@ -168,6 +168,9 @@ function MapContols({
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const controlsRef = useRef();
|
||||||
|
const settingsRef = useRef();
|
||||||
|
|
||||||
function getToolSettings() {
|
function getToolSettings() {
|
||||||
const Settings = toolsById[selectedToolId].SettingsComponent;
|
const Settings = toolsById[selectedToolId].SettingsComponent;
|
||||||
if (Settings) {
|
if (Settings) {
|
||||||
@ -182,6 +185,7 @@ function MapContols({
|
|||||||
borderRadius: "4px",
|
borderRadius: "4px",
|
||||||
}}
|
}}
|
||||||
p={1}
|
p={1}
|
||||||
|
ref={settingsRef}
|
||||||
>
|
>
|
||||||
<Settings
|
<Settings
|
||||||
settings={toolSettings[selectedToolId]}
|
settings={toolSettings[selectedToolId]}
|
||||||
@ -196,6 +200,35 @@ function MapContols({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Stop map drawing from happening when selecting controls
|
||||||
|
// Not using react events as they seem to trigger after dom events
|
||||||
|
useEffect(() => {
|
||||||
|
function stopPropagation(e) {
|
||||||
|
e.stopPropagation();
|
||||||
|
}
|
||||||
|
const controls = controlsRef.current;
|
||||||
|
if (controls) {
|
||||||
|
controls.addEventListener("mousedown", stopPropagation);
|
||||||
|
controls.addEventListener("touchstart", stopPropagation);
|
||||||
|
}
|
||||||
|
const settings = settingsRef.current;
|
||||||
|
if (settings) {
|
||||||
|
settings.addEventListener("mousedown", stopPropagation);
|
||||||
|
settings.addEventListener("touchstart", stopPropagation);
|
||||||
|
}
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
if (controls) {
|
||||||
|
controls.removeEventListener("mousedown", stopPropagation);
|
||||||
|
controls.removeEventListener("touchstart", stopPropagation);
|
||||||
|
}
|
||||||
|
if (settings) {
|
||||||
|
settings.removeEventListener("mousedown", stopPropagation);
|
||||||
|
settings.removeEventListener("touchstart", stopPropagation);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Flex
|
<Flex
|
||||||
@ -207,6 +240,7 @@ function MapContols({
|
|||||||
alignItems: "center",
|
alignItems: "center",
|
||||||
}}
|
}}
|
||||||
mx={1}
|
mx={1}
|
||||||
|
ref={controlsRef}
|
||||||
>
|
>
|
||||||
{controls}
|
{controls}
|
||||||
</Flex>
|
</Flex>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user