to do: debugging for handling ui collapse states

This commit is contained in:
2022-09-10 19:55:35 -05:00
parent c887e5ad74
commit 6ac83ef008
6 changed files with 52 additions and 30 deletions

View File

@@ -6,7 +6,7 @@ import { CardData } from "../../util/types"
import Card from "../Card/Card" import Card from "../Card/Card"
import "./CardRow.scss"; import "./CardRow.scss";
export default function CardRow({tier, state, setState}: CardRowProps) { export default function CardRow({tier, state, setState, liftCollapsed}: CardRowProps) {
const [collapsed, setCollapsed] = useState(true); const [collapsed, setCollapsed] = useState(true);
const typedTier = cardTierToKey(tier); const typedTier = cardTierToKey(tier);
@@ -27,11 +27,7 @@ export default function CardRow({tier, state, setState}: CardRowProps) {
} }
useEffect(() => { useEffect(() => {
/** liftCollapsed(collapsed, tier);
* run callback function to pass state of collapsed to parent component
* repeat this process in Nobles.tsx
**/
console.log(collapsed);
}, [collapsed]) }, [collapsed])
return ( return (

View File

@@ -56,18 +56,36 @@ export default function Gameboard({ state, setState }: StateProps) {
* todo: incorporate "collapse all rows" to player ui * todo: incorporate "collapse all rows" to player ui
* also incorporate "collapse player ui"? * also incorporate "collapse player ui"?
**/ **/
setUICollapse((prev: UIState) => {
switch (tier) {
case 1:
return {
...prev,
tierOneCollapsed: collapsed
}
case 2:
return {
...prev,
tierTwoCollapsed: collapsed
}
case 3:
return {
...prev,
tierThreeCollapsed: collapsed
}
default:
return {
...prev,
noblesCollapsed: collapsed
}
}
});
switch (tier) {
case 1: }, [UICollapse])
setUICollapse((prev) => {
return prev; useEffect(() => console.log(UICollapse), [UICollapse]);
})
break;
case 2: break;
case 3: break;
default: break;
}
}, [])
// util functions, setup on mount // util functions, setup on mount
useEffect(() => initializeBoard(state, setState), []) useEffect(() => initializeBoard(state, setState), [])
@@ -118,7 +136,7 @@ export default function Gameboard({ state, setState }: StateProps) {
<CardRow tier={1} state={state} setState={setState} liftCollapsed={liftCollapsed} /> <CardRow tier={1} state={state} setState={setState} liftCollapsed={liftCollapsed} />
</section> </section>
<section className="gameboard-right"> <section className="gameboard-right">
<AllPlayers state={state} setState={setState} liftSelection={liftSelection} /> <AllPlayers state={state} setState={setState} liftSelection={liftSelection} UICollapse={UICollapse} />
</section> </section>
</div> </div>
</div> </div>

View File

@@ -2,9 +2,9 @@ import { v4 } from "uuid";
import { NobleData, ResourceCost } from "../../util/types"; import { NobleData, ResourceCost } from "../../util/types";
import { NobleProps } from "../../util/propTypes"; import { NobleProps } from "../../util/propTypes";
import "../Nobles/Nobles.scss" import "../Nobles/Nobles.scss"
import { useState } from "react"; import { useEffect, useState } from "react";
export default function Nobles({ state }: NobleProps) { export default function Nobles({ state, liftCollapsed }: NobleProps) {
const [collapsed, setCollapsed] = useState(true); const [collapsed, setCollapsed] = useState(true);
if (!state.gameboard.nobles.length) { if (!state.gameboard.nobles.length) {
@@ -16,6 +16,10 @@ export default function Nobles({ state }: NobleProps) {
) )
} }
// useEffect(() => {
// liftCollapsed(collapsed, 5);
// }, [collapsed]);
return ( return (
<div className={`nobles-panel ${collapsed && 'collapsed'}`}> <div className={`nobles-panel ${collapsed && 'collapsed'}`}>
<div className="nobles-topbar"> <div className="nobles-topbar">

View File

@@ -10,6 +10,10 @@
background-color: rgb(188, 176, 146); background-color: rgb(188, 176, 146);
color: black; color: black;
&.collapsed {
background-color: red;
}
.player-ui { .player-ui {
.subheader { .subheader {
font-weight: bold; font-weight: bold;

View File

@@ -1,18 +1,15 @@
import { useEffect, useState } from "react";
import { v4 } from "uuid"; import { v4 } from "uuid";
import Player from "./Player"; import Player from "./Player";
import { PlayerData } from "../../util/types"; import { useCurrentPlayer } from "../../hooks/useCurrentPlayer";
import { ResourceProps } from "../../util/propTypes"; import { AllPlayersProps } from "../../util/propTypes";
import "./AllPlayers.scss"
import AvailableChips from "../Resources/AvailableChips"; import AvailableChips from "../Resources/AvailableChips";
import SelectionView from "../Resources/SelectionView"; import SelectionView from "../Resources/SelectionView";
import { useEffect, useState } from "react"; import "./AllPlayers.scss"
import { useCurrentPlayer } from "../../hooks/useCurrentPlayer";
export default function AllPlayers({ state, setState, liftSelection }: ResourceProps) { export default function AllPlayers({ state, setState, liftSelection, UICollapse }: AllPlayersProps) {
const [playerView, setPlayerView] = useState<JSX.Element>(); const [playerView, setPlayerView] = useState<JSX.Element>();
const playerPool = state.players?.map((player: PlayerData) => <Player key={v4()} player={player} state={state} setState={setState} />);
useEffect(() => { useEffect(() => {
const currentPlayer = useCurrentPlayer(state); const currentPlayer = useCurrentPlayer(state);
if (!currentPlayer) return; if (!currentPlayer) return;
@@ -20,7 +17,7 @@ export default function AllPlayers({ state, setState, liftSelection }: ResourceP
}, [state]); }, [state]);
return ( return (
<div className="all-players"> <div className={UICollapse.playerUICollapsed ? "all-players collapsed" : "all-players"}>
<SelectionView state={state} setState={setState} /> <SelectionView state={state} setState={setState} />
<AvailableChips state={state} setState={setState} liftSelection={liftSelection} /> <AvailableChips state={state} setState={setState} liftSelection={liftSelection} />
{ playerView } { playerView }

View File

@@ -1,4 +1,4 @@
import { AppState, CardData, PlayerData, ResourceCost, SetActionType, setStateType } from "./types"; import { AppState, CardData, PlayerData, ResourceCost, setStateType, UIState } from "./types";
export interface StateProps { export interface StateProps {
state: AppState, state: AppState,
@@ -28,3 +28,6 @@ export interface ResourceProps extends StateProps {
liftSelection: (value: keyof ResourceCost) => void liftSelection: (value: keyof ResourceCost) => void
} }
export interface AllPlayersProps extends ResourceProps {
UICollapse: UIState
}