1#[doc(alias = "button")]
5#[non_exhaustive]
6#[derive(Debug, Clone, PartialEq, Default)]
7pub struct Button {
8 pub data_map: crate::DataMap,
9 global_attrs: crate::GlobalAttributes,
10 pub disabled: bool,
12 pub form: std::option::Option<std::borrow::Cow<'static, str>>,
14 pub form_action: std::option::Option<std::borrow::Cow<'static, str>>,
16 pub form_enctype: std::option::Option<std::borrow::Cow<'static, str>>,
18 pub form_method: std::option::Option<std::borrow::Cow<'static, str>>,
20 pub form_no_validate: bool,
22 pub form_target: std::option::Option<std::borrow::Cow<'static, str>>,
24 pub name: std::option::Option<std::borrow::Cow<'static, str>>,
26 pub popovertarget: std::option::Option<std::borrow::Cow<'static, str>>,
28 pub popovertargetaction: std::option::Option<std::borrow::Cow<'static, str>>,
30 pub type_: std::option::Option<std::borrow::Cow<'static, str>>,
32 pub value: std::option::Option<std::borrow::Cow<'static, str>>,
34 pub role: std::option::Option<std::borrow::Cow<'static, str>>,
36 pub aria_active_descendant_element: std::option::Option<
38 std::borrow::Cow<'static, str>,
39 >,
40 pub aria_atomic: bool,
42 pub aria_auto_complete: std::option::Option<std::borrow::Cow<'static, str>>,
44 pub aria_braille_label: std::option::Option<std::borrow::Cow<'static, str>>,
46 pub aria_braille_role_description: std::option::Option<
48 std::borrow::Cow<'static, str>,
49 >,
50 pub aria_busy: bool,
52 pub aria_checked: std::option::Option<std::borrow::Cow<'static, str>>,
54 pub aria_col_index: std::option::Option<i64>,
56 pub aria_col_index_text: std::option::Option<std::borrow::Cow<'static, str>>,
58 pub aria_col_span: std::option::Option<i64>,
60 pub aria_controls_elements: std::option::Option<std::borrow::Cow<'static, str>>,
62 pub aria_current: std::option::Option<std::borrow::Cow<'static, str>>,
64 pub aria_described_by_elements: std::option::Option<std::borrow::Cow<'static, str>>,
66 pub aria_description: std::option::Option<std::borrow::Cow<'static, str>>,
68 pub aria_details_elements: std::option::Option<std::borrow::Cow<'static, str>>,
70 pub aria_disabled: bool,
72 pub aria_drop_effect: std::option::Option<std::borrow::Cow<'static, str>>,
74 pub aria_error_message_elements: std::option::Option<std::borrow::Cow<'static, str>>,
76 pub aria_expanded: bool,
78 pub aria_flow_to_elements: std::option::Option<std::borrow::Cow<'static, str>>,
80 pub aria_grabbed: bool,
82 pub aria_has_popup: std::option::Option<std::borrow::Cow<'static, str>>,
84 pub aria_hidden: bool,
86 pub aria_invalid: std::option::Option<std::borrow::Cow<'static, str>>,
88 pub aria_key_shortcuts: std::option::Option<std::borrow::Cow<'static, str>>,
90 pub aria_label: std::option::Option<std::borrow::Cow<'static, str>>,
92 pub aria_labelled_by_elements: std::option::Option<std::borrow::Cow<'static, str>>,
94 pub aria_level: std::option::Option<i64>,
96 pub aria_live: std::option::Option<std::borrow::Cow<'static, str>>,
98 pub aria_orientation: std::option::Option<std::borrow::Cow<'static, str>>,
100 pub aria_owns_elements: std::option::Option<std::borrow::Cow<'static, str>>,
102 pub aria_pos_in_set: std::option::Option<i64>,
104 pub aria_pressed: std::option::Option<std::borrow::Cow<'static, str>>,
106 pub aria_read_only: bool,
108 pub aria_relevant: std::option::Option<std::borrow::Cow<'static, str>>,
110 pub aria_required: bool,
112 pub aria_role_description: std::option::Option<std::borrow::Cow<'static, str>>,
114 pub aria_row_index: std::option::Option<i64>,
116 pub aria_row_index_text: std::option::Option<std::borrow::Cow<'static, str>>,
118 pub aria_row_span: std::option::Option<i64>,
120 pub aria_selected: bool,
122 pub aria_set_size: std::option::Option<i64>,
124 pub aria_value_max: std::option::Option<f64>,
126 pub aria_value_min: std::option::Option<f64>,
128 pub aria_value_text: std::option::Option<std::borrow::Cow<'static, str>>,
130}
131impl crate::RenderElement for Button {
132 fn write_opening_tag<W: std::fmt::Write>(&self, writer: &mut W) -> std::fmt::Result {
133 write!(writer, "<button")?;
134 if self.disabled {
135 write!(writer, r#" disabled"#)?;
136 }
137 if let Some(field) = self.form.as_ref() {
138 write!(writer, r#" form="{field}""#)?;
139 }
140 if let Some(field) = self.form_action.as_ref() {
141 write!(writer, r#" formaction="{field}""#)?;
142 }
143 if let Some(field) = self.form_enctype.as_ref() {
144 write!(writer, r#" formenctype="{field}""#)?;
145 }
146 if let Some(field) = self.form_method.as_ref() {
147 write!(writer, r#" formmethod="{field}""#)?;
148 }
149 if self.form_no_validate {
150 write!(writer, r#" formnovalidate"#)?;
151 }
152 if let Some(field) = self.form_target.as_ref() {
153 write!(writer, r#" formtarget="{field}""#)?;
154 }
155 if let Some(field) = self.name.as_ref() {
156 write!(writer, r#" name="{field}""#)?;
157 }
158 if let Some(field) = self.popovertarget.as_ref() {
159 write!(writer, r#" popovertarget="{field}""#)?;
160 }
161 if let Some(field) = self.popovertargetaction.as_ref() {
162 write!(writer, r#" popovertargetaction="{field}""#)?;
163 }
164 if let Some(field) = self.type_.as_ref() {
165 write!(writer, r#" type="{field}""#)?;
166 }
167 if let Some(field) = self.value.as_ref() {
168 write!(writer, r#" value="{field}""#)?;
169 }
170 if let Some(field) = self.role.as_ref() {
171 write!(writer, r#" role="{field}""#)?;
172 }
173 if let Some(field) = self.aria_active_descendant_element.as_ref() {
174 write!(writer, r#" aria-activedescendant="{field}""#)?;
175 }
176 if self.aria_atomic {
177 write!(writer, r#" aria-atomic"#)?;
178 }
179 if let Some(field) = self.aria_auto_complete.as_ref() {
180 write!(writer, r#" aria-autocomplete="{field}""#)?;
181 }
182 if let Some(field) = self.aria_braille_label.as_ref() {
183 write!(writer, r#" aria-braillelabel="{field}""#)?;
184 }
185 if let Some(field) = self.aria_braille_role_description.as_ref() {
186 write!(writer, r#" aria-brailleroledescription="{field}""#)?;
187 }
188 if self.aria_busy {
189 write!(writer, r#" aria-busy"#)?;
190 }
191 if let Some(field) = self.aria_checked.as_ref() {
192 write!(writer, r#" aria-checked="{field}""#)?;
193 }
194 if let Some(field) = self.aria_col_index.as_ref() {
195 write!(writer, r#" aria-colindex="{field}""#)?;
196 }
197 if let Some(field) = self.aria_col_index_text.as_ref() {
198 write!(writer, r#" aria-colindextext="{field}""#)?;
199 }
200 if let Some(field) = self.aria_col_span.as_ref() {
201 write!(writer, r#" aria-colspan="{field}""#)?;
202 }
203 if let Some(field) = self.aria_controls_elements.as_ref() {
204 write!(writer, r#" aria-controls="{field}""#)?;
205 }
206 if let Some(field) = self.aria_current.as_ref() {
207 write!(writer, r#" aria-current="{field}""#)?;
208 }
209 if let Some(field) = self.aria_described_by_elements.as_ref() {
210 write!(writer, r#" aria-describedby="{field}""#)?;
211 }
212 if let Some(field) = self.aria_description.as_ref() {
213 write!(writer, r#" aria-description="{field}""#)?;
214 }
215 if let Some(field) = self.aria_details_elements.as_ref() {
216 write!(writer, r#" aria-details="{field}""#)?;
217 }
218 if self.aria_disabled {
219 write!(writer, r#" aria-disabled"#)?;
220 }
221 if let Some(field) = self.aria_drop_effect.as_ref() {
222 write!(writer, r#" aria-dropeffect="{field}""#)?;
223 }
224 if let Some(field) = self.aria_error_message_elements.as_ref() {
225 write!(writer, r#" aria-errormessage="{field}""#)?;
226 }
227 if self.aria_expanded {
228 write!(writer, r#" aria-expanded"#)?;
229 }
230 if let Some(field) = self.aria_flow_to_elements.as_ref() {
231 write!(writer, r#" aria-flowto="{field}""#)?;
232 }
233 if self.aria_grabbed {
234 write!(writer, r#" aria-grabbed"#)?;
235 }
236 if let Some(field) = self.aria_has_popup.as_ref() {
237 write!(writer, r#" aria-haspopup="{field}""#)?;
238 }
239 if self.aria_hidden {
240 write!(writer, r#" aria-hidden"#)?;
241 }
242 if let Some(field) = self.aria_invalid.as_ref() {
243 write!(writer, r#" aria-invalid="{field}""#)?;
244 }
245 if let Some(field) = self.aria_key_shortcuts.as_ref() {
246 write!(writer, r#" aria-keyshortcuts="{field}""#)?;
247 }
248 if let Some(field) = self.aria_label.as_ref() {
249 write!(writer, r#" aria-label="{field}""#)?;
250 }
251 if let Some(field) = self.aria_labelled_by_elements.as_ref() {
252 write!(writer, r#" aria-labelledby="{field}""#)?;
253 }
254 if let Some(field) = self.aria_level.as_ref() {
255 write!(writer, r#" aria-level="{field}""#)?;
256 }
257 if let Some(field) = self.aria_live.as_ref() {
258 write!(writer, r#" aria-live="{field}""#)?;
259 }
260 if let Some(field) = self.aria_orientation.as_ref() {
261 write!(writer, r#" aria-orientation="{field}""#)?;
262 }
263 if let Some(field) = self.aria_owns_elements.as_ref() {
264 write!(writer, r#" aria-owns="{field}""#)?;
265 }
266 if let Some(field) = self.aria_pos_in_set.as_ref() {
267 write!(writer, r#" aria-posinset="{field}""#)?;
268 }
269 if let Some(field) = self.aria_pressed.as_ref() {
270 write!(writer, r#" aria-pressed="{field}""#)?;
271 }
272 if self.aria_read_only {
273 write!(writer, r#" aria-readonly"#)?;
274 }
275 if let Some(field) = self.aria_relevant.as_ref() {
276 write!(writer, r#" aria-relevant="{field}""#)?;
277 }
278 if self.aria_required {
279 write!(writer, r#" aria-required"#)?;
280 }
281 if let Some(field) = self.aria_role_description.as_ref() {
282 write!(writer, r#" aria-roledescription="{field}""#)?;
283 }
284 if let Some(field) = self.aria_row_index.as_ref() {
285 write!(writer, r#" aria-rowindex="{field}""#)?;
286 }
287 if let Some(field) = self.aria_row_index_text.as_ref() {
288 write!(writer, r#" aria-rowindextext="{field}""#)?;
289 }
290 if let Some(field) = self.aria_row_span.as_ref() {
291 write!(writer, r#" aria-rowspan="{field}""#)?;
292 }
293 if self.aria_selected {
294 write!(writer, r#" aria-selected"#)?;
295 }
296 if let Some(field) = self.aria_set_size.as_ref() {
297 write!(writer, r#" aria-setsize="{field}""#)?;
298 }
299 if let Some(field) = self.aria_value_max.as_ref() {
300 write!(writer, r#" aria-valuemax="{field}""#)?;
301 }
302 if let Some(field) = self.aria_value_min.as_ref() {
303 write!(writer, r#" aria-valuemin="{field}""#)?;
304 }
305 if let Some(field) = self.aria_value_text.as_ref() {
306 write!(writer, r#" aria-valuetext="{field}""#)?;
307 }
308 write!(writer, "{}", self.global_attrs)?;
309 write!(writer, "{}", self.data_map)?;
310 write!(writer, ">")?;
311 Ok(())
312 }
313 #[allow(unused_variables)]
314 fn write_closing_tag<W: std::fmt::Write>(&self, writer: &mut W) -> std::fmt::Result {
315 write!(writer, "</button>")?;
316 Ok(())
317 }
318}
319impl std::fmt::Display for Button {
320 fn fmt(&self, writer: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
321 use crate::RenderElement;
322 self.write_opening_tag(writer)?;
323 self.write_closing_tag(writer)?;
324 Ok(())
325 }
326}
327impl std::ops::Deref for Button {
328 type Target = crate::GlobalAttributes;
329 fn deref(&self) -> &Self::Target {
330 &self.global_attrs
331 }
332}
333impl std::ops::DerefMut for Button {
334 fn deref_mut(&mut self) -> &mut Self::Target {
335 &mut self.global_attrs
336 }
337}