1#[doc(alias = "option")]
5#[non_exhaustive]
6#[derive(Debug, Clone, PartialEq, Default)]
7pub struct Option {
8 pub data_map: crate::DataMap,
9 global_attrs: crate::GlobalAttributes,
10 pub disabled: bool,
12 pub label: std::option::Option<std::borrow::Cow<'static, str>>,
14 pub selected: bool,
16 pub value: std::option::Option<std::borrow::Cow<'static, str>>,
18 pub role: std::option::Option<std::borrow::Cow<'static, str>>,
20 pub aria_atomic: bool,
22 pub aria_braille_label: std::option::Option<std::borrow::Cow<'static, str>>,
24 pub aria_braille_role_description: std::option::Option<
26 std::borrow::Cow<'static, str>,
27 >,
28 pub aria_busy: bool,
30 pub aria_checked: std::option::Option<std::borrow::Cow<'static, str>>,
32 pub aria_controls_elements: std::option::Option<std::borrow::Cow<'static, str>>,
34 pub aria_current: std::option::Option<std::borrow::Cow<'static, str>>,
36 pub aria_described_by_elements: std::option::Option<std::borrow::Cow<'static, str>>,
38 pub aria_description: std::option::Option<std::borrow::Cow<'static, str>>,
40 pub aria_details_elements: std::option::Option<std::borrow::Cow<'static, str>>,
42 pub aria_disabled: bool,
44 pub aria_drop_effect: std::option::Option<std::borrow::Cow<'static, str>>,
46 pub aria_error_message_elements: std::option::Option<std::borrow::Cow<'static, str>>,
48 pub aria_flow_to_elements: std::option::Option<std::borrow::Cow<'static, str>>,
50 pub aria_grabbed: bool,
52 pub aria_has_popup: std::option::Option<std::borrow::Cow<'static, str>>,
54 pub aria_hidden: bool,
56 pub aria_invalid: std::option::Option<std::borrow::Cow<'static, str>>,
58 pub aria_key_shortcuts: std::option::Option<std::borrow::Cow<'static, str>>,
60 pub aria_label: std::option::Option<std::borrow::Cow<'static, str>>,
62 pub aria_labelled_by_elements: std::option::Option<std::borrow::Cow<'static, str>>,
64 pub aria_live: std::option::Option<std::borrow::Cow<'static, str>>,
66 pub aria_owns_elements: std::option::Option<std::borrow::Cow<'static, str>>,
68 pub aria_pos_in_set: std::option::Option<i64>,
70 pub aria_relevant: std::option::Option<std::borrow::Cow<'static, str>>,
72 pub aria_role_description: std::option::Option<std::borrow::Cow<'static, str>>,
74 pub aria_selected: bool,
76 pub aria_set_size: std::option::Option<i64>,
78}
79impl crate::RenderElement for Option {
80 fn write_opening_tag<W: std::fmt::Write>(&self, writer: &mut W) -> std::fmt::Result {
81 write!(writer, "<option")?;
82 if self.disabled {
83 write!(writer, r#" disabled"#)?;
84 }
85 if let Some(field) = self.label.as_ref() {
86 write!(writer, r#" label="{field}""#)?;
87 }
88 if self.selected {
89 write!(writer, r#" selected"#)?;
90 }
91 if let Some(field) = self.value.as_ref() {
92 write!(writer, r#" value="{field}""#)?;
93 }
94 if let Some(field) = self.role.as_ref() {
95 write!(writer, r#" role="{field}""#)?;
96 }
97 if self.aria_atomic {
98 write!(writer, r#" aria-atomic"#)?;
99 }
100 if let Some(field) = self.aria_braille_label.as_ref() {
101 write!(writer, r#" aria-braillelabel="{field}""#)?;
102 }
103 if let Some(field) = self.aria_braille_role_description.as_ref() {
104 write!(writer, r#" aria-brailleroledescription="{field}""#)?;
105 }
106 if self.aria_busy {
107 write!(writer, r#" aria-busy"#)?;
108 }
109 if let Some(field) = self.aria_checked.as_ref() {
110 write!(writer, r#" aria-checked="{field}""#)?;
111 }
112 if let Some(field) = self.aria_controls_elements.as_ref() {
113 write!(writer, r#" aria-controls="{field}""#)?;
114 }
115 if let Some(field) = self.aria_current.as_ref() {
116 write!(writer, r#" aria-current="{field}""#)?;
117 }
118 if let Some(field) = self.aria_described_by_elements.as_ref() {
119 write!(writer, r#" aria-describedby="{field}""#)?;
120 }
121 if let Some(field) = self.aria_description.as_ref() {
122 write!(writer, r#" aria-description="{field}""#)?;
123 }
124 if let Some(field) = self.aria_details_elements.as_ref() {
125 write!(writer, r#" aria-details="{field}""#)?;
126 }
127 if self.aria_disabled {
128 write!(writer, r#" aria-disabled"#)?;
129 }
130 if let Some(field) = self.aria_drop_effect.as_ref() {
131 write!(writer, r#" aria-dropeffect="{field}""#)?;
132 }
133 if let Some(field) = self.aria_error_message_elements.as_ref() {
134 write!(writer, r#" aria-errormessage="{field}""#)?;
135 }
136 if let Some(field) = self.aria_flow_to_elements.as_ref() {
137 write!(writer, r#" aria-flowto="{field}""#)?;
138 }
139 if self.aria_grabbed {
140 write!(writer, r#" aria-grabbed"#)?;
141 }
142 if let Some(field) = self.aria_has_popup.as_ref() {
143 write!(writer, r#" aria-haspopup="{field}""#)?;
144 }
145 if self.aria_hidden {
146 write!(writer, r#" aria-hidden"#)?;
147 }
148 if let Some(field) = self.aria_invalid.as_ref() {
149 write!(writer, r#" aria-invalid="{field}""#)?;
150 }
151 if let Some(field) = self.aria_key_shortcuts.as_ref() {
152 write!(writer, r#" aria-keyshortcuts="{field}""#)?;
153 }
154 if let Some(field) = self.aria_label.as_ref() {
155 write!(writer, r#" aria-label="{field}""#)?;
156 }
157 if let Some(field) = self.aria_labelled_by_elements.as_ref() {
158 write!(writer, r#" aria-labelledby="{field}""#)?;
159 }
160 if let Some(field) = self.aria_live.as_ref() {
161 write!(writer, r#" aria-live="{field}""#)?;
162 }
163 if let Some(field) = self.aria_owns_elements.as_ref() {
164 write!(writer, r#" aria-owns="{field}""#)?;
165 }
166 if let Some(field) = self.aria_pos_in_set.as_ref() {
167 write!(writer, r#" aria-posinset="{field}""#)?;
168 }
169 if let Some(field) = self.aria_relevant.as_ref() {
170 write!(writer, r#" aria-relevant="{field}""#)?;
171 }
172 if let Some(field) = self.aria_role_description.as_ref() {
173 write!(writer, r#" aria-roledescription="{field}""#)?;
174 }
175 if self.aria_selected {
176 write!(writer, r#" aria-selected"#)?;
177 }
178 if let Some(field) = self.aria_set_size.as_ref() {
179 write!(writer, r#" aria-setsize="{field}""#)?;
180 }
181 write!(writer, "{}", self.global_attrs)?;
182 write!(writer, "{}", self.data_map)?;
183 write!(writer, ">")?;
184 Ok(())
185 }
186 #[allow(unused_variables)]
187 fn write_closing_tag<W: std::fmt::Write>(&self, writer: &mut W) -> std::fmt::Result {
188 write!(writer, "</option>")?;
189 Ok(())
190 }
191}
192impl std::fmt::Display for Option {
193 fn fmt(&self, writer: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
194 use crate::RenderElement;
195 self.write_opening_tag(writer)?;
196 self.write_closing_tag(writer)?;
197 Ok(())
198 }
199}
200impl std::ops::Deref for Option {
201 type Target = crate::GlobalAttributes;
202 fn deref(&self) -> &Self::Target {
203 &self.global_attrs
204 }
205}
206impl std::ops::DerefMut for Option {
207 fn deref_mut(&mut self) -> &mut Self::Target {
208 &mut self.global_attrs
209 }
210}