summaryrefslogtreecommitdiff
path: root/webapp/src/components/card.rs
diff options
context:
space:
mode:
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>,
}