messaging_api_line/models/
flex_box.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct FlexBox {
16 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
17 pub r#type: Option<String>,
18 #[serde(rename = "layout")]
19 pub layout: Layout,
20 #[serde(rename = "flex", skip_serializing_if = "Option::is_none")]
21 pub flex: Option<i32>,
22 #[serde(rename = "contents")]
23 pub contents: Vec<models::FlexComponent>,
24 #[serde(rename = "spacing", skip_serializing_if = "Option::is_none")]
25 pub spacing: Option<String>,
26 #[serde(rename = "margin", skip_serializing_if = "Option::is_none")]
27 pub margin: Option<String>,
28 #[serde(rename = "position", skip_serializing_if = "Option::is_none")]
29 pub position: Option<Position>,
30 #[serde(rename = "offsetTop", skip_serializing_if = "Option::is_none")]
31 pub offset_top: Option<String>,
32 #[serde(rename = "offsetBottom", skip_serializing_if = "Option::is_none")]
33 pub offset_bottom: Option<String>,
34 #[serde(rename = "offsetStart", skip_serializing_if = "Option::is_none")]
35 pub offset_start: Option<String>,
36 #[serde(rename = "offsetEnd", skip_serializing_if = "Option::is_none")]
37 pub offset_end: Option<String>,
38 #[serde(rename = "backgroundColor", skip_serializing_if = "Option::is_none")]
39 pub background_color: Option<String>,
40 #[serde(rename = "borderColor", skip_serializing_if = "Option::is_none")]
41 pub border_color: Option<String>,
42 #[serde(rename = "borderWidth", skip_serializing_if = "Option::is_none")]
43 pub border_width: Option<String>,
44 #[serde(rename = "cornerRadius", skip_serializing_if = "Option::is_none")]
45 pub corner_radius: Option<String>,
46 #[serde(rename = "width", skip_serializing_if = "Option::is_none")]
47 pub width: Option<String>,
48 #[serde(rename = "maxWidth", skip_serializing_if = "Option::is_none")]
49 pub max_width: Option<String>,
50 #[serde(rename = "height", skip_serializing_if = "Option::is_none")]
51 pub height: Option<String>,
52 #[serde(rename = "maxHeight", skip_serializing_if = "Option::is_none")]
53 pub max_height: Option<String>,
54 #[serde(rename = "paddingAll", skip_serializing_if = "Option::is_none")]
55 pub padding_all: Option<String>,
56 #[serde(rename = "paddingTop", skip_serializing_if = "Option::is_none")]
57 pub padding_top: Option<String>,
58 #[serde(rename = "paddingBottom", skip_serializing_if = "Option::is_none")]
59 pub padding_bottom: Option<String>,
60 #[serde(rename = "paddingStart", skip_serializing_if = "Option::is_none")]
61 pub padding_start: Option<String>,
62 #[serde(rename = "paddingEnd", skip_serializing_if = "Option::is_none")]
63 pub padding_end: Option<String>,
64 #[serde(rename = "action", skip_serializing_if = "Option::is_none")]
65 pub action: Option<Box<models::Action>>,
66 #[serde(rename = "justifyContent", skip_serializing_if = "Option::is_none")]
67 pub justify_content: Option<JustifyContent>,
68 #[serde(rename = "alignItems", skip_serializing_if = "Option::is_none")]
69 pub align_items: Option<AlignItems>,
70 #[serde(rename = "background", skip_serializing_if = "Option::is_none")]
71 pub background: Option<Box<models::FlexBoxBackground>>,
72}
73
74impl FlexBox {
75 pub fn new(r#type: String, layout: Layout, contents: Vec<models::FlexComponent>) -> FlexBox {
76 FlexBox {
77 r#type: Some(r#type),
78 layout,
79 flex: None,
80 contents,
81 spacing: None,
82 margin: None,
83 position: None,
84 offset_top: None,
85 offset_bottom: None,
86 offset_start: None,
87 offset_end: None,
88 background_color: None,
89 border_color: None,
90 border_width: None,
91 corner_radius: None,
92 width: None,
93 max_width: None,
94 height: None,
95 max_height: None,
96 padding_all: None,
97 padding_top: None,
98 padding_bottom: None,
99 padding_start: None,
100 padding_end: None,
101 action: None,
102 justify_content: None,
103 align_items: None,
104 background: None,
105 }
106 }
107}
108#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
110pub enum Layout {
111 #[serde(rename = "horizontal")]
112 Horizontal,
113 #[serde(rename = "vertical")]
114 Vertical,
115 #[serde(rename = "baseline")]
116 Baseline,
117}
118
119impl Default for Layout {
120 fn default() -> Layout {
121 Self::Horizontal
122 }
123}
124#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
126pub enum Position {
127 #[serde(rename = "relative")]
128 Relative,
129 #[serde(rename = "absolute")]
130 Absolute,
131}
132
133impl Default for Position {
134 fn default() -> Position {
135 Self::Relative
136 }
137}
138#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
140pub enum JustifyContent {
141 #[serde(rename = "center")]
142 Center,
143 #[serde(rename = "flex-start")]
144 FlexStart,
145 #[serde(rename = "flex-end")]
146 FlexEnd,
147 #[serde(rename = "space-between")]
148 SpaceBetween,
149 #[serde(rename = "space-around")]
150 SpaceAround,
151 #[serde(rename = "space-evenly")]
152 SpaceEvenly,
153}
154
155impl Default for JustifyContent {
156 fn default() -> JustifyContent {
157 Self::Center
158 }
159}
160#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
162pub enum AlignItems {
163 #[serde(rename = "center")]
164 Center,
165 #[serde(rename = "flex-start")]
166 FlexStart,
167 #[serde(rename = "flex-end")]
168 FlexEnd,
169}
170
171impl Default for AlignItems {
172 fn default() -> AlignItems {
173 Self::Center
174 }
175}