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