Games tab on admin page working
This commit is contained in:
102
src/ui/game/GamesList.tsx
Normal file
102
src/ui/game/GamesList.tsx
Normal file
@@ -0,0 +1,102 @@
|
||||
import { ButtonProps } from "@/components/button/Button";
|
||||
import Table from "@/components/table/Table";
|
||||
import { Game } from "@/interface/Game";
|
||||
import { useState } from "react";
|
||||
import GameAdminButtons from "./GameAdminButtons";
|
||||
import DeleteGameModal from "./modals/DeleteGameModal";
|
||||
import GameModal from "./modals/GameModal";
|
||||
|
||||
|
||||
export default function GamesList({
|
||||
games
|
||||
}:{
|
||||
games: Game[];
|
||||
}){
|
||||
const [ selectedGame, setSelectedGame ] = useState<Game>();
|
||||
const [ displayEditGameModal, setDisplayEditGameModal ] = useState(false);
|
||||
const [ displayDeleteGameModal, setDisplayDeleteGameModal ] = useState(false);
|
||||
|
||||
|
||||
const buttonProps: ButtonProps = {
|
||||
variant: "ghost",
|
||||
size: "md",
|
||||
shape: "square"
|
||||
};
|
||||
|
||||
|
||||
const headElements: React.ReactNode[] = [
|
||||
<div>
|
||||
Icon
|
||||
</div>,
|
||||
<div>
|
||||
Name
|
||||
</div>,
|
||||
<div
|
||||
className="pl-16"
|
||||
>
|
||||
Actions
|
||||
</div>
|
||||
];
|
||||
|
||||
const bodyElements: React.ReactNode[][] = games.map((game) => [
|
||||
<div>
|
||||
{
|
||||
game.gameIcon &&
|
||||
<div
|
||||
className="absolute -my-4"
|
||||
>
|
||||
<img
|
||||
className="m-auto"
|
||||
src={`${import.meta.env.VITE_ICON_URL}/gameIcons/${game.gameIcon}`}
|
||||
height={56}
|
||||
width={56}
|
||||
/>
|
||||
</div>
|
||||
}
|
||||
|
||||
</div>,
|
||||
<div>
|
||||
{game.gameName}
|
||||
</div>,
|
||||
<div
|
||||
className="flex flex-row items-center justify-center gap-2 pl-16"
|
||||
>
|
||||
<div
|
||||
className="py-4 border-l border-neutral-500"
|
||||
>
|
||||
|
||||
</div>
|
||||
<GameAdminButtons
|
||||
buttonProps={buttonProps}
|
||||
showEditGameModal={() => {
|
||||
setSelectedGame(game);
|
||||
setDisplayEditGameModal(true);
|
||||
}}
|
||||
showDeleteGameModal={() => {
|
||||
setSelectedGame(game);
|
||||
setDisplayDeleteGameModal(true);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
]);
|
||||
|
||||
|
||||
return (
|
||||
<>
|
||||
<Table
|
||||
tableHeadElements={headElements}
|
||||
tableBodyElements={bodyElements}
|
||||
/>
|
||||
<GameModal
|
||||
display={displayEditGameModal}
|
||||
close={() => {setDisplayEditGameModal(false); setSelectedGame(undefined);}}
|
||||
game={selectedGame}
|
||||
/>
|
||||
<DeleteGameModal
|
||||
display={displayDeleteGameModal}
|
||||
close={() => {setDisplayDeleteGameModal(false); setSelectedGame(undefined);}}
|
||||
game={selectedGame}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user