yew_bs/components/
interactions.rs

1use 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/// User select variants available in Bootstrap
16#[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}