diff --git a/src/components/token/TokenSettings.js b/src/components/token/TokenSettings.js new file mode 100644 index 0000000..75f4ae4 --- /dev/null +++ b/src/components/token/TokenSettings.js @@ -0,0 +1,64 @@ +import React from "react"; +import { Flex, Box, Input, IconButton, Label } from "theme-ui"; + +import ExpandMoreIcon from "../../icons/ExpandMoreIcon"; + +function TokenSettings({ + token, + onSettingsChange, + showMore, + onShowMoreChange, +}) { + return ( + + + + + + onSettingsChange("defaultSize", parseInt(e.target.value)) + } + disabled={!token || token.type === "default"} + min={1} + my={1} + /> + + + {showMore && ( + <> + + + onSettingsChange("name", e.target.value)} + disabled={!token || token.type === "default"} + my={1} + /> + + + )} + { + e.stopPropagation(); + e.preventDefault(); + onShowMoreChange(!showMore); + }} + sx={{ + transform: `rotate(${showMore ? "180deg" : "0"})`, + alignSelf: "center", + }} + aria-label={showMore ? "Show Less" : "Show More"} + title={showMore ? "Show Less" : "Show More"} + disabled={!token} + > + + + + ); +} + +export default TokenSettings; diff --git a/src/components/token/Tokens.js b/src/components/token/Tokens.js index 3eb3ad1..2f87797 100644 --- a/src/components/token/Tokens.js +++ b/src/components/token/Tokens.js @@ -1,11 +1,10 @@ -import React, { useState, useContext } from "react"; +import React, { useContext } from "react"; import { Box, Flex } from "theme-ui"; import shortid from "shortid"; import SimpleBar from "simplebar-react"; import ListToken from "./ListToken"; import ProxyToken from "./ProxyToken"; -import NumberInput from "../NumberInput"; import SelectTokensButton from "./SelectTokensButton"; @@ -20,8 +19,6 @@ function Tokens({ onMapTokenStateCreate }) { const { userId } = useContext(AuthContext); const { ownedTokens, tokens } = useContext(TokenDataContext); - const [tokenSize, setTokenSize] = useState(1); - function handleProxyDragEnd(isOnMap, token) { if (isOnMap && onMapTokenStateCreate) { // Create a token state from the dragged token @@ -30,7 +27,7 @@ function Tokens({ onMapTokenStateCreate }) { tokenId: token.id, tokenType: token.type, owner: userId, - size: tokenSize, + size: token.defaultSize, label: "", statuses: [], x: token.x, @@ -69,13 +66,6 @@ function Tokens({ onMapTokenStateCreate }) { }} > - {/* */} @@ -103,6 +116,19 @@ function SelectTokensModal({ isOpen, onRequestClose }) { onTokenSelect={handleTokenSelect} onTokenRemove={handleTokenRemove} /> + + diff --git a/src/tokens/index.js b/src/tokens/index.js index 8293d84..7802899 100644 --- a/src/tokens/index.js +++ b/src/tokens/index.js @@ -65,10 +65,24 @@ export const tokenSources = { undead, }; +function getDefaultTokenSize(key) { + switch (key) { + case "dragon": + case "elemental": + case "giant": + case "ooze": + case "titan": + return 2; + default: + return 1; + } +} + export const tokens = Object.keys(tokenSources).map((key) => ({ key, name: key.charAt(0).toUpperCase() + key.slice(1), type: "default", + defaultSize: getDefaultTokenSize(key), })); export const unknownSource = unknown;