summaryrefslogtreecommitdiff
path: root/webapp/src/components/card.rs
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2022-09-11 13:03:36 -0400
committerKjetil Orbekk <kj@orbekk.com>2022-09-11 13:03:36 -0400
commit435272c941d6cb8e7e18312cac16e319b16e8f50 (patch)
tree3da95e1e2e2d90c883d07b3185d49654fdd590de /webapp/src/components/card.rs
parent9656f8ce14360dc0eb83e2b65ed25eef79c02e42 (diff)
Add card callbacks
Diffstat (limited to 'webapp/src/components/card.rs')
-rw-r--r--webapp/src/components/card.rs26
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>,
}