dom_accessibility_api/
accessible_description.rs1use web_sys::Element;
2
3use crate::{
4 accessible_name_and_description::{
5 compute_text_alternative, Compute, ComputeTextAlternativeOptions,
6 },
7 util::query_id_refs,
8};
9
10pub fn compute_accessible_description(
12 root: &Element,
13 options: ComputeTextAlternativeOptions,
14) -> String {
15 let mut description = query_id_refs(root, "aria-describedby")
16 .iter()
17 .map(|element| {
18 compute_text_alternative(
19 element,
20 ComputeTextAlternativeOptions {
21 compute: Some(Compute::Description),
22 ..options.clone()
23 },
24 )
25 })
26 .collect::<Vec<_>>()
27 .join(" ");
28
29 if description.is_empty() {
35 if let Some(aria_description) = root.get_attribute("aria-description") {
36 description = aria_description;
37 }
38 }
39
40 if description.is_empty() {
43 if let Some(title) = root.get_attribute("title") {
44 description = title;
45 }
46 }
47
48 description
49}