From 01f386f9cfa22a434e0241d6e7708e59471188a0 Mon Sep 17 00:00:00 2001 From: navorite Date: Fri, 11 Jul 2025 07:14:16 +0300 Subject: [PATCH 1/4] fix: silence a11y warning for inert elements --- .../src/compiler/phases/2-analyze/visitors/shared/a11y.js | 4 +++- .../samples/a11y-consider-explicit-label/input.svelte | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y.js index 1f58a28cad73..bc925aa10b53 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y.js @@ -999,7 +999,9 @@ export function check_element(node, context) { const is_labelled = attribute_map.has('aria-label') || attribute_map.has('aria-labelledby'); if (node.name === 'a' || node.name === 'button') { - const is_hidden = get_static_value(attribute_map.get('aria-hidden')) === 'true'; + const is_hidden = + get_static_value(attribute_map.get('aria-hidden')) === 'true' || + get_static_value(attribute_map.get('inert')); if (!has_spread && !is_hidden && !is_labelled && !has_content(node)) { w.a11y_consider_explicit_label(node); diff --git a/packages/svelte/tests/validator/samples/a11y-consider-explicit-label/input.svelte b/packages/svelte/tests/validator/samples/a11y-consider-explicit-label/input.svelte index 11dc007352fa..e97951065da2 100644 --- a/packages/svelte/tests/validator/samples/a11y-consider-explicit-label/input.svelte +++ b/packages/svelte/tests/validator/samples/a11y-consider-explicit-label/input.svelte @@ -5,6 +5,7 @@ + From b2113f2dcf9d522e9c08524d9f2ca64156bdfe00 Mon Sep 17 00:00:00 2001 From: navorite Date: Fri, 11 Jul 2025 07:29:42 +0300 Subject: [PATCH 2/4] changeset --- .changeset/tall-avocados-repair.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/tall-avocados-repair.md diff --git a/.changeset/tall-avocados-repair.md b/.changeset/tall-avocados-repair.md new file mode 100644 index 000000000000..cf11fc961000 --- /dev/null +++ b/.changeset/tall-avocados-repair.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: silence a11y warning for inert elements From c6a8147fe7cefeea7dc15f32bba36d7ed8775883 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Mon, 14 Jul 2025 15:16:20 -0400 Subject: [PATCH 3/4] handle `inert=""` --- .../src/compiler/phases/2-analyze/visitors/shared/a11y/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js index cf48fae48111..744027ca9c24 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js @@ -389,7 +389,7 @@ export function check_element(node, context) { case 'button': { const is_hidden = get_static_value(attribute_map.get('aria-hidden')) === 'true' || - get_static_value(attribute_map.get('inert')); + get_static_value(attribute_map.get('inert')) === null; if (!has_spread && !is_hidden && !is_labelled && !has_content(node)) { w.a11y_consider_explicit_label(node); From 34c03c3b2b6c986d7197176d1ea706edd8c22188 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Mon, 14 Jul 2025 15:21:25 -0400 Subject: [PATCH 4/4] oops --- .../src/compiler/phases/2-analyze/visitors/shared/a11y/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js index 744027ca9c24..f45a6c9a80d6 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js @@ -389,7 +389,7 @@ export function check_element(node, context) { case 'button': { const is_hidden = get_static_value(attribute_map.get('aria-hidden')) === 'true' || - get_static_value(attribute_map.get('inert')) === null; + get_static_value(attribute_map.get('inert')) !== null; if (!has_spread && !is_hidden && !is_labelled && !has_content(node)) { w.a11y_consider_explicit_label(node);