Skip to main content

react_rs_elements/
types.rs

1pub enum InputType {
2    Text,
3    Password,
4    Email,
5    Number,
6    Tel,
7    Url,
8    Search,
9    Date,
10    Time,
11    DatetimeLocal,
12    Month,
13    Week,
14    Color,
15    File,
16    Hidden,
17    Checkbox,
18    Radio,
19    Range,
20    Submit,
21    Reset,
22    Button,
23    Image,
24}
25
26impl InputType {
27    pub fn as_str(&self) -> &'static str {
28        match self {
29            Self::Text => "text",
30            Self::Password => "password",
31            Self::Email => "email",
32            Self::Number => "number",
33            Self::Tel => "tel",
34            Self::Url => "url",
35            Self::Search => "search",
36            Self::Date => "date",
37            Self::Time => "time",
38            Self::DatetimeLocal => "datetime-local",
39            Self::Month => "month",
40            Self::Week => "week",
41            Self::Color => "color",
42            Self::File => "file",
43            Self::Hidden => "hidden",
44            Self::Checkbox => "checkbox",
45            Self::Radio => "radio",
46            Self::Range => "range",
47            Self::Submit => "submit",
48            Self::Reset => "reset",
49            Self::Button => "button",
50            Self::Image => "image",
51        }
52    }
53}
54
55pub enum LinkTarget {
56    Self_,
57    Blank,
58    Parent,
59    Top,
60}
61
62impl LinkTarget {
63    pub fn as_str(&self) -> &'static str {
64        match self {
65            Self::Self_ => "_self",
66            Self::Blank => "_blank",
67            Self::Parent => "_parent",
68            Self::Top => "_top",
69        }
70    }
71}
72
73pub enum FormMethod {
74    Get,
75    Post,
76    Dialog,
77}
78
79impl FormMethod {
80    pub fn as_str(&self) -> &'static str {
81        match self {
82            Self::Get => "get",
83            Self::Post => "post",
84            Self::Dialog => "dialog",
85        }
86    }
87}
88
89#[cfg(test)]
90mod tests {
91    use super::*;
92
93    #[test]
94    fn test_input_type() {
95        assert_eq!(InputType::Checkbox.as_str(), "checkbox");
96        assert_eq!(InputType::Email.as_str(), "email");
97        assert_eq!(InputType::DatetimeLocal.as_str(), "datetime-local");
98    }
99
100    #[test]
101    fn test_link_target() {
102        assert_eq!(LinkTarget::Blank.as_str(), "_blank");
103        assert_eq!(LinkTarget::Self_.as_str(), "_self");
104    }
105
106    #[test]
107    fn test_form_method() {
108        assert_eq!(FormMethod::Post.as_str(), "post");
109    }
110}