use crate::components::bid_css_class; use protocol::{contract::LevelAndSuit, actions::Bid}; use yew::prelude::*; #[function_component(BiddingBox)] pub fn bidding_box(props: &BiddingBoxProps) -> Html { let bids = LevelAndSuit::all_raises().into_iter().map(|raise| { let mut class = if Some(raise) <= props.current_bid { classes!("disabled") } else { classes!("enabled") }; class.extend(classes!(bid_css_class(raise.suit))); let onclick = { let on_bid = props.on_bid.clone(); Callback::from(move |_| on_bid.emit(Bid::Raise(raise))) }; html! {
{ raise.level }
} }); let onclick = |bid| { let on_bid = props.on_bid.clone(); Callback::from(move |_| on_bid.emit(bid)) }; html! {
{ for bids }
{ "Pass" }
{ "X" }
{ "XX" }
} } #[derive(PartialEq, Properties, Clone)] pub struct BiddingBoxProps { pub current_bid: Option, pub on_bid: Callback, }