Added keyboard shortcuts to map select

This commit is contained in:
Mitchell McCaffrey
2020-09-30 13:58:43 +10:00
parent b7a89a4a4a
commit 8ac4e0aec9
3 changed files with 49 additions and 18 deletions

View File

@@ -1,4 +1,4 @@
import React, { useState } from "react";
import React from "react";
import { Flex, Image as UIImage, IconButton, Box, Text } from "theme-ui";
import EditMapIcon from "../../icons/EditMapIcon";
@@ -15,7 +15,6 @@ function MapTile({
large,
canEdit,
}) {
const [isMapTileMenuOpen, setIsTileMenuOpen] = useState(false);
const isDefault = map.type === "default";
const mapSource = useDataSource(
isDefault
@@ -40,17 +39,17 @@ function MapTile({
alignItems: "center",
cursor: "pointer",
overflow: "hidden",
userSelect: "none",
}}
my={1}
mx={`${large ? 1 : 2 / 3}%`}
bg="muted"
onClick={(e) => {
e.stopPropagation();
setIsTileMenuOpen(false);
onMapSelect(map);
}}
onDoubleClick={(e) => {
if (!isMapTileMenuOpen) {
if (canEdit) {
onDone(e);
}
}}

View File

@@ -32,16 +32,22 @@ function MapTiles({
const isSmallScreen = useMedia({ query: "(max-width: 500px)" });
let hasMapState = false;
if (selectedMapStates.length > 0) {
for (let state of selectedMapStates) {
if (
Object.values(state.tokens).length > 0 ||
state.mapDrawActions.length > 0 ||
state.fogDrawActions.length > 0
) {
hasMapState = true;
break;
}
for (let state of selectedMapStates) {
if (
Object.values(state.tokens).length > 0 ||
state.mapDrawActions.length > 0 ||
state.fogDrawActions.length > 0
) {
hasMapState = true;
break;
}
}
let hasSelectedDefaultMap = false;
for (let map of selectedMaps) {
if (map.type === "default") {
hasSelectedDefaultMap = true;
break;
}
}
@@ -110,7 +116,11 @@ function MapTiles({
onMapEdit={onMapEdit}
onDone={onDone}
large={isSmallScreen}
canEdit={isSelected && selectMode === "single"}
canEdit={
isSelected &&
selectMode === "single" &&
selectedMaps.length === 1
}
/>
);
})}
@@ -163,6 +173,7 @@ function MapTiles({
aria-label="Remove Map"
title="Remove Map"
onClick={() => onMapsRemove()}
disabled={hasSelectedDefaultMap}
>
<RemoveMapIcon />
</IconButton>