Files
grungnet/src/components/map/MapTileGroup.tsx

58 lines
1.3 KiB
TypeScript
Raw Normal View History

import { Grid } from "theme-ui";
2021-05-14 18:02:50 +10:00
import Tile from "../tile/Tile";
2021-07-16 18:59:29 +10:00
import MapImage from "./MapTileImage";
2021-05-14 18:02:50 +10:00
import useResponsiveLayout from "../../hooks/useResponsiveLayout";
2021-07-17 12:48:04 +10:00
import { Map } from "../../types/Map";
import { GroupContainer } from "../../types/Group";
type MapTileGroupProps = {
group: GroupContainer;
maps: Map[];
isSelected: boolean;
onSelect: (groupId: string) => void;
onDoubleClick: () => void;
};
function MapTileGroup({
group,
maps,
isSelected,
onSelect,
onDoubleClick,
}: MapTileGroupProps) {
const layout = useResponsiveLayout();
2021-05-14 18:02:50 +10:00
return (
<Tile
title={group.name}
isSelected={isSelected}
onSelect={() => onSelect(group.id)}
onDoubleClick={onDoubleClick}
2021-05-14 18:02:50 +10:00
>
2021-05-25 15:47:52 +10:00
<Grid
columns={`repeat(${layout.groupGridColumns}, 1fr)`}
p={2}
sx={{
gridGap: 2,
gridTemplateRows: `repeat(${layout.groupGridColumns}, 1fr)`,
}}
2021-05-25 15:47:52 +10:00
>
{maps
.slice(0, layout.groupGridColumns * layout.groupGridColumns)
.map((map) => (
<MapImage
sx={{ borderRadius: "8px" }}
map={map}
key={`${map.id}-group-tile`}
/>
))}
</Grid>
2021-05-14 18:02:50 +10:00
</Tile>
);
}
export default MapTileGroup;