diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-09-11 13:03:36 -0400 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-09-11 13:03:36 -0400 |
commit | 435272c941d6cb8e7e18312cac16e319b16e8f50 (patch) | |
tree | 3da95e1e2e2d90c883d07b3185d49654fdd590de /webapp/src/components/card.rs | |
parent | 9656f8ce14360dc0eb83e2b65ed25eef79c02e42 (diff) |
Add card callbacks
Diffstat (limited to 'webapp/src/components/card.rs')
-rw-r--r-- | webapp/src/components/card.rs | 26 |
1 files changed, 14 insertions, 12 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! { - <div class="card"> - <div class={ suit_css_class(props.suit) }> - { props.rank } + <div class="card" {onclick}> + <div class={ suit_css_class(suit) }> + { rank } </div> </div> } @@ -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<card::Card> for CardProps { - fn from(card::Card(suit, rank): card::Card) -> Self { - CardProps { suit, rank } - } + pub card: card::Card, + pub onclick: Callback<card::Card>, } |