consecuit_html/interfaces/
hr.rs

1use crate::elem::{HtmlProp, HtmlProps};
2use std::borrow::Cow;
3use web_sys::HtmlHrElement;
4
5#[allow(non_camel_case_types)]
6#[derive(Clone, PartialEq)]
7pub enum HrProp {
8    align(Cow<'static, str>),
9    color(Cow<'static, str>),
10    no_shade(bool),
11    size(Cow<'static, str>),
12    width(Cow<'static, str>),
13}
14
15#[sealed::sealed]
16impl crate::elem::HtmlComponent for HtmlHrElement {
17    type PropEnum = HrProp;
18}
19#[sealed::sealed]
20impl crate::elem::PropEnum<HtmlHrElement> for HrProp {
21    fn unset_on(&self, elem: &HtmlHrElement) {
22        match self {
23            HrProp::align(_) => elem.remove_attribute("align").unwrap(),
24            HrProp::color(_) => elem.remove_attribute("color").unwrap(),
25            HrProp::no_shade(_) => elem.remove_attribute("no_shade").unwrap(),
26            HrProp::size(_) => elem.remove_attribute("size").unwrap(),
27            HrProp::width(_) => elem.remove_attribute("width").unwrap(),
28        }
29    }
30
31    fn set_on(&self, elem: &HtmlHrElement) {
32        match self {
33            HrProp::align(v) => elem.set_align(v),
34            HrProp::color(v) => elem.set_color(v),
35            HrProp::no_shade(v) => elem.set_no_shade(*v),
36            HrProp::size(v) => elem.set_size(v),
37            HrProp::width(v) => elem.set_width(v),
38        }
39    }
40}
41
42impl HtmlProps<HtmlHrElement> {
43    pub fn align(mut self, val: impl Into<Cow<'static, str>>) -> Self {
44        let val = val.into();
45        self.0.push_back(HtmlProp::Own(HrProp::align(val)));
46        self
47    }
48
49    pub fn color(mut self, val: impl Into<Cow<'static, str>>) -> Self {
50        let val = val.into();
51        self.0.push_back(HtmlProp::Own(HrProp::color(val)));
52        self
53    }
54
55    pub fn no_shade(mut self, val: bool) -> Self {
56        self.0.push_back(HtmlProp::Own(HrProp::no_shade(val)));
57        self
58    }
59
60    pub fn size(mut self, val: impl Into<Cow<'static, str>>) -> Self {
61        let val = val.into();
62        self.0.push_back(HtmlProp::Own(HrProp::size(val)));
63        self
64    }
65
66    pub fn width(mut self, val: impl Into<Cow<'static, str>>) -> Self {
67        let val = val.into();
68        self.0.push_back(HtmlProp::Own(HrProp::width(val)));
69        self
70    }
71}