lenra_app/components/
lenra.rs1use crate::from_value;
2
3include!("../gen/components_lenra.rs");
4
5impl Into<LenraComponent> for builder::Actionable {
6 fn into(self) -> LenraComponent {
7 LenraComponent::Actionable(Box::new(self.try_into().unwrap()))
8 }
9}
10
11impl Into<LenraComponent> for builder::Button {
12 fn into(self) -> LenraComponent {
13 LenraComponent::Button(self.try_into().unwrap())
14 }
15}
16
17impl Into<LenraComponent> for builder::Carousel {
18 fn into(self) -> LenraComponent {
19 LenraComponent::Carousel(self.try_into().unwrap())
20 }
21}
22
23impl Into<LenraComponent> for builder::Checkbox {
24 fn into(self) -> LenraComponent {
25 LenraComponent::Checkbox(self.try_into().unwrap())
26 }
27}
28
29impl Into<LenraComponent> for builder::Container {
30 fn into(self) -> LenraComponent {
31 LenraComponent::Container(self.try_into().unwrap())
32 }
33}
34
35impl Into<LenraComponent> for builder::DropdownButton {
36 fn into(self) -> LenraComponent {
37 LenraComponent::DropdownButton(self.try_into().unwrap())
38 }
39}
40
41impl Into<LenraComponent> for builder::Flex {
42 fn into(self) -> LenraComponent {
43 LenraComponent::Flex(self.try_into().unwrap())
44 }
45}
46
47impl Into<LenraComponent> for builder::Flexible {
48 fn into(self) -> LenraComponent {
49 LenraComponent::Flexible(self.try_into().unwrap())
50 }
51}
52
53impl Into<LenraComponent> for builder::Form {
54 fn into(self) -> LenraComponent {
55 LenraComponent::Form(self.try_into().unwrap())
56 }
57}
58
59impl Into<LenraComponent> for builder::Icon {
60 fn into(self) -> LenraComponent {
61 LenraComponent::Icon(self.try_into().unwrap())
62 }
63}
64
65impl Into<LenraComponent> for builder::Image {
66 fn into(self) -> LenraComponent {
67 LenraComponent::Image(self.try_into().unwrap())
68 }
69}
70
71impl Into<LenraComponent> for builder::Menu {
72 fn into(self) -> LenraComponent {
73 LenraComponent::Menu(self.try_into().unwrap())
74 }
75}
76
77impl Into<LenraComponent> for builder::MenuItem {
78 fn into(self) -> LenraComponent {
79 LenraComponent::MenuItem(self.try_into().unwrap())
80 }
81}
82
83impl Into<LenraComponent> for builder::OverlayEntry {
84 fn into(self) -> LenraComponent {
85 LenraComponent::OverlayEntry(self.try_into().unwrap())
86 }
87}
88
89impl Into<LenraComponent> for builder::Radio {
90 fn into(self) -> LenraComponent {
91 LenraComponent::Radio(self.try_into().unwrap())
92 }
93}
94
95impl Into<LenraComponent> for builder::Slider {
96 fn into(self) -> LenraComponent {
97 LenraComponent::Slider(self.try_into().unwrap())
98 }
99}
100
101impl Into<LenraComponent> for builder::Stack {
102 fn into(self) -> LenraComponent {
103 LenraComponent::Stack(self.try_into().unwrap())
104 }
105}
106
107impl Into<LenraComponent> for builder::StatusSticker {
108 fn into(self) -> LenraComponent {
109 LenraComponent::StatusSticker(self.try_into().unwrap())
110 }
111}
112
113impl Into<LenraComponent> for builder::Text {
114 fn into(self) -> LenraComponent {
115 LenraComponent::Text(self.try_into().unwrap())
116 }
117}
118
119impl Into<LenraComponent> for builder::Toggle {
126 fn into(self) -> LenraComponent {
127 LenraComponent::Toggle(self.try_into().unwrap())
128 }
129}
130
131impl Into<LenraComponent> for builder::View {
132 fn into(self) -> LenraComponent {
133 LenraComponent::View(self.try_into().unwrap())
134 }
135}
136
137impl Into<LenraComponent> for builder::Wrap {
138 fn into(self) -> LenraComponent {
139 LenraComponent::Wrap(self.try_into().unwrap())
140 }
141}
142
143impl StylesPadding {
144 pub fn symmetric(vertical: u16, horizontal: u16) -> StylesPadding {
145 StylesPadding {
146 top: Some(vertical.into()),
147 bottom: Some(vertical.into()),
148 left: Some(horizontal.into()),
149 right: Some(horizontal.into()),
150 }
151 }
152}
153
154from_value!(DefsProps);
155from_value!(DataQuery);
156from_value!(DataProjection);
157
158#[cfg(test)]
159mod test {
160
161 use super::*;
162
163 #[test]
164 fn simple_lenra_component() {
165 let result: LenraComponent = flex(vec![text("Hello").into(), text("World").into()]).into();
166 assert_eq!(
167 serde_json::to_string(&result).unwrap(),
168 r#"{"children":[{"_type":"text","value":"Hello"},{"_type":"text","value":"World"}],"_type":"flex"}"#
169 );
170 }
171
172 #[test]
173 fn simple_icon() {
174 let icon: Icon = icon(StylesIconName::AcUnit).try_into().unwrap();
175 assert_eq!(
176 serde_json::to_string(&icon).unwrap(),
177 r#"{"_type":"icon","value":"ac_unit"}"#
178 );
179 }
180}