sendou.ink/frontend-react/src/components/builds/ViewSlots.tsx
2020-05-23 20:32:46 +03:00

88 lines
2.4 KiB
TypeScript

import React from "react"
import { Build, Ability } from "../../types"
import AbilityIcon from "./AbilityIcon"
import { Flex, Box, BoxProps } from "@chakra-ui/core"
interface ViewSlotsProps {
build: Partial<Build>
onAbilityClick?: (gear: "HEAD" | "CLOTHING" | "SHOES", index: number) => void
}
const ViewSlots: React.FC<ViewSlotsProps & BoxProps> = ({
build,
onAbilityClick,
...props
}) => {
return (
<Box {...props}>
<Flex alignItems="center" justifyContent="center">
{(
build.headgear ??
(["UNKNOWN", "UNKNOWN", "UNKNOWN", "UNKNOWN"] as Ability[])
).map((ability, index) => (
<Box
mx="3px"
key={index}
onClick={
onAbilityClick ? () => onAbilityClick("HEAD", index) : undefined
}
cursor={onAbilityClick ? "pointer" : undefined}
>
<AbilityIcon
key={index}
ability={ability}
size={index === 0 ? "MAIN" : "SUB"}
/>
</Box>
))}
</Flex>
<Flex alignItems="center" justifyContent="center" my="0.5em">
{(
build.clothing ??
(["UNKNOWN", "UNKNOWN", "UNKNOWN", "UNKNOWN"] as Ability[])
).map((ability, index) => (
<Box
mx="3px"
key={index}
onClick={
onAbilityClick
? () => onAbilityClick("CLOTHING", index)
: undefined
}
cursor={onAbilityClick ? "pointer" : undefined}
>
<AbilityIcon
key={index}
ability={ability}
size={index === 0 ? "MAIN" : "SUB"}
/>
</Box>
))}
</Flex>
<Flex alignItems="center" justifyContent="center">
{(
build.shoes ??
(["UNKNOWN", "UNKNOWN", "UNKNOWN", "UNKNOWN"] as Ability[])
).map((ability, index) => (
<Box
mx="3px"
key={index}
onClick={
onAbilityClick ? () => onAbilityClick("SHOES", index) : undefined
}
cursor={onAbilityClick ? "pointer" : undefined}
>
<AbilityIcon
key={index}
ability={ability}
size={index === 0 ? "MAIN" : "SUB"}
/>
</Box>
))}
</Flex>
</Box>
)
}
export default ViewSlots