messaging_api_line/models/
flex_button.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct FlexButton {
16 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
17 pub r#type: Option<String>,
18 #[serde(rename = "flex", skip_serializing_if = "Option::is_none")]
19 pub flex: Option<i32>,
20 #[serde(rename = "color", skip_serializing_if = "Option::is_none")]
21 pub color: Option<String>,
22 #[serde(rename = "style", skip_serializing_if = "Option::is_none")]
23 pub style: Option<Style>,
24 #[serde(rename = "action")]
25 pub action: Box<models::Action>,
26 #[serde(rename = "gravity", skip_serializing_if = "Option::is_none")]
27 pub gravity: Option<Gravity>,
28 #[serde(rename = "margin", skip_serializing_if = "Option::is_none")]
29 pub margin: Option<String>,
30 #[serde(rename = "position", skip_serializing_if = "Option::is_none")]
31 pub position: Option<Position>,
32 #[serde(rename = "offsetTop", skip_serializing_if = "Option::is_none")]
33 pub offset_top: Option<String>,
34 #[serde(rename = "offsetBottom", skip_serializing_if = "Option::is_none")]
35 pub offset_bottom: Option<String>,
36 #[serde(rename = "offsetStart", skip_serializing_if = "Option::is_none")]
37 pub offset_start: Option<String>,
38 #[serde(rename = "offsetEnd", skip_serializing_if = "Option::is_none")]
39 pub offset_end: Option<String>,
40 #[serde(rename = "height", skip_serializing_if = "Option::is_none")]
41 pub height: Option<Height>,
42 #[serde(rename = "adjustMode", skip_serializing_if = "Option::is_none")]
43 pub adjust_mode: Option<AdjustMode>,
44 #[serde(rename = "scaling", skip_serializing_if = "Option::is_none")]
45 pub scaling: Option<bool>,
46}
47
48impl FlexButton {
49 pub fn new(r#type: String, action: models::Action) -> FlexButton {
50 FlexButton {
51 r#type: Some(r#type),
52 flex: None,
53 color: None,
54 style: None,
55 action: Box::new(action),
56 gravity: None,
57 margin: None,
58 position: None,
59 offset_top: None,
60 offset_bottom: None,
61 offset_start: None,
62 offset_end: None,
63 height: None,
64 adjust_mode: None,
65 scaling: None,
66 }
67 }
68}
69#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
71pub enum Style {
72 #[serde(rename = "primary")]
73 Primary,
74 #[serde(rename = "secondary")]
75 Secondary,
76 #[serde(rename = "link")]
77 Link,
78}
79
80impl Default for Style {
81 fn default() -> Style {
82 Self::Primary
83 }
84}
85#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
87pub enum Gravity {
88 #[serde(rename = "top")]
89 Top,
90 #[serde(rename = "bottom")]
91 Bottom,
92 #[serde(rename = "center")]
93 Center,
94}
95
96impl Default for Gravity {
97 fn default() -> Gravity {
98 Self::Top
99 }
100}
101#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
103pub enum Position {
104 #[serde(rename = "relative")]
105 Relative,
106 #[serde(rename = "absolute")]
107 Absolute,
108}
109
110impl Default for Position {
111 fn default() -> Position {
112 Self::Relative
113 }
114}
115#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
117pub enum Height {
118 #[serde(rename = "md")]
119 Md,
120 #[serde(rename = "sm")]
121 Sm,
122}
123
124impl Default for Height {
125 fn default() -> Height {
126 Self::Md
127 }
128}
129#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
131pub enum AdjustMode {
132 #[serde(rename = "shrink-to-fit")]
133 ShrinkToFit,
134}
135
136impl Default for AdjustMode {
137 fn default() -> AdjustMode {
138 Self::ShrinkToFit
139 }
140}