yew_bs/components/
interactions.rs1use yew::prelude::*;
2#[derive(Clone, Copy, PartialEq, Debug)]
3pub enum PointerEvents {
4 Auto,
5 None,
6}
7impl PointerEvents {
8 pub fn as_str(&self) -> &'static str {
9 match self {
10 PointerEvents::Auto => "pointer-events-auto",
11 PointerEvents::None => "pointer-events-none",
12 }
13 }
14}
15#[derive(Clone, Copy, PartialEq, Debug)]
17pub enum UserSelect {
18 All,
19 Auto,
20 None,
21}
22impl UserSelect {
23 pub fn as_str(&self) -> &'static str {
24 match self {
25 UserSelect::All => "user-select-all",
26 UserSelect::Auto => "user-select-auto",
27 UserSelect::None => "user-select-none",
28 }
29 }
30}
31#[derive(Properties, PartialEq)]
32pub struct InteractionsProps {
33 #[prop_or_default]
34 pub pointer_events: Option<PointerEvents>,
35 #[prop_or_default]
36 pub user_select: Option<UserSelect>,
37 #[prop_or_default]
38 pub children: Children,
39 #[prop_or_default]
40 pub class: Option<AttrValue>,
41}
42#[function_component(Interactions)]
43pub fn interactions(props: &InteractionsProps) -> Html {
44 let mut classes = Classes::new();
45 if let Some(pointer_events) = &props.pointer_events {
46 classes.push(pointer_events.as_str());
47 }
48 if let Some(user_select) = &props.user_select {
49 classes.push(user_select.as_str());
50 }
51 if let Some(custom_class) = &props.class {
52 classes.push(custom_class.to_string());
53 }
54 html! {
55 < div class = { classes } > { for props.children.iter() } </ div >
56 }
57}