From 7df34a355429c94f84ff93ce96d4b73d700878ae Mon Sep 17 00:00:00 2001 From: ComputerGuy <63362464+Ocean-OS@users.noreply.github.com> Date: Fri, 11 Jul 2025 16:50:36 -0700 Subject: [PATCH] apply changes from #16340 and #16341 --- .../phases/2-analyze/visitors/shared/a11y/utils.js | 10 +++++++--- packages/svelte/src/compiler/phases/patterns.js | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/utils.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/utils.js index bda1f24068..d0bc4e747d 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/utils.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/utils.js @@ -36,7 +36,9 @@ import { roles as roles_map, aria } from 'aria-query'; import { AXObjectRoles, elementAXObjects } from 'axobject-query'; import { regex_heading_tags, + regex_js_prefix, regex_not_whitespace, + regex_redundant_img_alt, regex_starts_with_vowel, regex_whitespaces } from '../../../../patterns.js'; @@ -533,7 +535,9 @@ export function check_element(node, context) { } // no-autofocus case 'autofocus': { - w.a11y_autofocus(attribute); + if (node.name !== 'dialog' && !is_parent(context.path, ['dialog'])) { + w.a11y_autofocus(attribute); + } break; } // scope @@ -673,7 +677,7 @@ export function check_element(node, context) { if (href) { const href_value = get_static_text_value(href); if (href_value !== null) { - if (href_value === '' || href_value === '#' || /^\W*javascript:/i.test(href_value)) { + if (href_value === '' || href_value === '#' || regex_js_prefix.test(href_value)) { w.a11y_invalid_attribute(href, href_value, href.name); } } @@ -715,7 +719,7 @@ export function check_element(node, context) { const alt_attribute = get_static_text_value(attribute_map.get('alt')); const aria_hidden = get_static_value(attribute_map.get('aria-hidden')); if (alt_attribute && !aria_hidden && !has_spread) { - if (/\b(image|picture|photo)\b/i.test(alt_attribute)) { + if (regex_redundant_img_alt.test(alt_attribute)) { w.a11y_img_redundant_alt(node); } } diff --git a/packages/svelte/src/compiler/phases/patterns.js b/packages/svelte/src/compiler/phases/patterns.js index 2bee717131..448be7f949 100644 --- a/packages/svelte/src/compiler/phases/patterns.js +++ b/packages/svelte/src/compiler/phases/patterns.js @@ -23,3 +23,5 @@ export const regex_heading_tags = /^h[1-6]$/; export const regex_illegal_attribute_character = /(^[0-9-.])|[\^$@%&#?!|()[\]{}^*+~;]/; export const regex_bidirectional_control_characters = /[\u202a\u202b\u202c\u202d\u202e\u2066\u2067\u2068\u2069]+/g; +export const regex_js_prefix = /^\W*javascript:/i; +export const regex_redundant_img_alt = /\b(image|picture|photo)\b/i;