diff --git a/src/components/map/MapSettings.js b/src/components/map/MapSettings.js
new file mode 100644
index 0000000..a6d0c76
--- /dev/null
+++ b/src/components/map/MapSettings.js
@@ -0,0 +1,33 @@
+import React from "react";
+import { Flex, Box, Label, Input } from "theme-ui";
+
+function MapSettings({ map, onSettingsChange }) {
+ return (
+
+
+
+ onSettingsChange("gridX", parseInt(e.target.value))}
+ disabled={map === null || map.type === "default"}
+ min={1}
+ />
+
+
+
+ onSettingsChange("gridY", parseInt(e.target.value))}
+ disabled={map === null || map.type === "default"}
+ min={1}
+ />
+
+
+ );
+}
+
+export default MapSettings;
diff --git a/src/modals/SelectMapModal.js b/src/modals/SelectMapModal.js
index 522e04f..ad8ee21 100644
--- a/src/modals/SelectMapModal.js
+++ b/src/modals/SelectMapModal.js
@@ -6,6 +6,7 @@ import db from "../database";
import Modal from "../components/Modal";
import MapTiles from "../components/map/MapTiles";
+import MapSettings from "../components/map/MapSettings";
import AuthContext from "../contexts/AuthContext";
@@ -83,8 +84,6 @@ function SelectMapModal({
loadMaps();
}, [userId]);
- const [gridX, setGridX] = useState(defaultMapSize);
- const [gridY, setGridY] = useState(defaultMapSize);
const fileInputRef = useRef();
function handleImageUpload(file) {
@@ -150,8 +149,6 @@ function SelectMapModal({
await db.table("states").add({ ...defaultMapState, mapId: map.id });
setMaps((prevMaps) => [map, ...prevMaps]);
setSelectedMap(map);
- setGridX(map.gridX);
- setGridY(map.gridY);
}
async function handleMapRemove(id) {
@@ -170,8 +167,6 @@ function SelectMapModal({
function handleMapSelect(map) {
setSelectedMap(map);
- setGridX(map.gridX);
- setGridY(map.gridY);
}
async function handleMapReset(id) {
@@ -193,32 +188,17 @@ function SelectMapModal({
onDone();
}
- async function handleGridXChange(e) {
- const newX = e.target.value;
- await db.table("maps").update(selectedMap.id, { gridX: newX });
- setGridX(newX);
+ async function handleMapSettingsChange(key, value) {
+ await db.table("maps").update(selectedMap.id, { [key]: value });
setMaps((prevMaps) => {
const newMaps = [...prevMaps];
const i = newMaps.findIndex((map) => map.id === selectedMap.id);
if (i > -1) {
- newMaps[i].gridX = newX;
- }
- return newMaps;
- });
- }
-
- async function handleGridYChange(e) {
- const newY = e.target.value;
- await db.table("maps").update(selectedMap.id, { gridY: newY });
- setGridY(newY);
- setMaps((prevMaps) => {
- const newMaps = [...prevMaps];
- const i = newMaps.findIndex((map) => map.id === selectedMap.id);
- if (i > -1) {
- newMaps[i].gridY = newY;
+ newMaps[i][key] = value;
}
return newMaps;
});
+ setSelectedMap((prevMap) => ({ ...prevMap, [key]: value }));
}
/**
@@ -274,30 +254,10 @@ function SelectMapModal({
onMapReset={handleMapReset}
onSubmit={handleSubmit}
/>
-
-
-
-
-
-
-
-
-
-
+