dioxus_element_plug/components/
common.rs1use dioxus::prelude::*;
6
7#[derive(Debug, Clone)]
11pub struct ClassBuilder {
12 classes: Vec<String>,
13}
14
15impl ClassBuilder {
16 pub fn new(base: &str) -> Self {
18 Self {
19 classes: vec![base.to_string()],
20 }
21 }
22
23 pub fn add_class(mut self, class: &str) -> Self {
25 if !class.is_empty() {
26 self.classes.push(class.to_string());
27 }
28 self
29 }
30
31 pub fn add_if(mut self, class: &str, condition: bool) -> Self {
33 if condition {
34 self.classes.push(class.to_string());
35 }
36 self
37 }
38
39 pub fn add_opt(mut self, class: Option<&String>) -> Self {
41 if let Some(c) = class {
42 self.classes.push(c.clone());
43 }
44 self
45 }
46
47 pub fn add_opt_str(mut self, class: Option<&str>) -> Self {
49 if let Some(c) = class {
50 self.classes.push(c.to_string());
51 }
52 self
53 }
54
55 pub fn build(self) -> String {
57 self.classes.join(" ")
58 }
59}
60
61#[inline]
65pub fn style_str(style: &Option<String>) -> String {
66 style.clone().unwrap_or_default()
67}
68
69#[inline]
71pub fn fire_event<E: 'static>(handler: &Option<EventHandler<E>>, event: E) {
72 if let Some(h) = handler {
73 h.call(event);
74 }
75}