// retoor <retoor@molodetz.nl>
export class Accessibility {
constructor() {
this.hideDecorativeIcons();
this.markCurrentLinks();
this.labelIconControls();
}
hideDecorativeIcons() {
document.querySelectorAll(".icon, .topnav-caret").forEach((icon) => {
if (icon.hasAttribute("aria-hidden")) return;
const host = icon.closest("a, button, label, summary, li, h1, h2, h3, h4, span, div");
if (!host) return;
const named =
host.getAttribute("aria-label") ||
host.getAttribute("title") ||
(host.textContent || "").replace(icon.textContent || "", "").trim();
if (named) icon.setAttribute("aria-hidden", "true");
});
}
markCurrentLinks() {
document.querySelectorAll("nav a.active").forEach((link) => {
if (!link.hasAttribute("aria-current")) {
link.setAttribute("aria-current", "page");
}
});
}
labelIconControls() {
document.querySelectorAll("a[title], button[title]").forEach((el) => {
if (el.getAttribute("aria-label")) return;
if ((el.textContent || "").trim()) return;
el.setAttribute("aria-label", el.getAttribute("title"));
});
}
}