consecuit_html/interfaces/
hr.rs1use 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}