From 435272c941d6cb8e7e18312cac16e319b16e8f50 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Sun, 11 Sep 2022 13:03:36 -0400 Subject: Add card callbacks --- webapp/src/components/card.rs | 26 ++++++++++++++------------ webapp/src/components/game.rs | 23 +++++++++++++++++------ webapp/src/components/hand.rs | 30 +++++++++--------------------- 3 files changed, 40 insertions(+), 39 deletions(-) diff --git a/webapp/src/components/card.rs b/webapp/src/components/card.rs index 6fbe7e7..5401899 100644 --- a/webapp/src/components/card.rs +++ b/webapp/src/components/card.rs @@ -1,13 +1,21 @@ use yew::prelude::*; -use crate::card::{self, Suit, Rank}; +use crate::card; use crate::components::suit_css_class; #[function_component(Card)] pub fn ccard(props: &CardProps) -> Html { + let card::Card(suit, rank) = props.card; + + let onclick = { + let card = props.card.clone(); + let onclick = props.onclick.clone(); + Callback::from(move |_| onclick.emit(card)) + }; + html! { -
-
- { props.rank } +
+
+ { rank }
} @@ -15,12 +23,6 @@ pub fn ccard(props: &CardProps) -> Html { #[derive(PartialEq, Properties, Clone)] pub struct CardProps { - pub suit: Suit, - pub rank: Rank, -} - -impl From for CardProps { - fn from(card::Card(suit, rank): card::Card) -> Self { - CardProps { suit, rank } - } + pub card: card::Card, + pub onclick: Callback, } diff --git a/webapp/src/components/game.rs b/webapp/src/components/game.rs index 1544f13..d6341ac 100644 --- a/webapp/src/components/game.rs +++ b/webapp/src/components/game.rs @@ -1,7 +1,8 @@ use crate::bridge_engine::{self, Contract, Player}; use crate::card; use crate::card::Suit; -use crate::components::{Bidding, Hand, HandProps, ShowBid}; +use crate::components::{Bidding, Hand, ShowBid}; +use log::info; use yew::prelude::*; pub const SUIT_DISPLAY_ORDER: [Suit; 4] = [Suit::Diamond, Suit::Club, Suit::Heart, Suit::Spade]; @@ -55,6 +56,8 @@ pub fn game() -> Html { }) }; + let on_card_clicked = { Callback::from(move |card| info!("Card clicked: {}", card)) }; + html! { <>