From 5872b89fb8e6e01dac9c9c9d4fdc3e9ae416014c Mon Sep 17 00:00:00 2001 From: Richman018 <239411042+Richman018@users.noreply.github.com> Date: Tue, 27 Jan 2026 07:00:12 +0800 Subject: [PATCH] fix: add pointer and touch events to a11y_no_static_element_interactions warning (#17548) * fix: add pointer and touch events to a11y_no_static_element_interactions warning Fixes #17527 The a11y_no_static_element_interactions warning now triggers for pointer and touch events (onpointerdown, onpointerenter, ontouchstart, etc.) in addition to mouse and drag events. This ensures accessibility warnings are consistent across all pointer input methods. * fix test --------- Co-authored-by: Daniel Co-authored-by: Rich Harris --- .../visitors/shared/a11y/constants.js | 16 ++++++++- .../input.svelte | 3 ++ .../warnings.json | 36 +++++++++++++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/constants.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/constants.js index a1b70f2207..684ea92094 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/constants.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/constants.js @@ -67,7 +67,21 @@ export const a11y_interactive_handlers = [ 'mousemove', 'mouseout', 'mouseover', - 'mouseup' + 'mouseup', + // Pointer events + 'pointerdown', + 'pointerup', + 'pointermove', + 'pointerenter', + 'pointerleave', + 'pointerover', + 'pointerout', + 'pointercancel', + // Touch events + 'touchstart', + 'touchend', + 'touchmove', + 'touchcancel' ]; export const a11y_recommended_interactive_handlers = [ diff --git a/packages/svelte/tests/validator/samples/a11y-no-static-element-interactions/input.svelte b/packages/svelte/tests/validator/samples/a11y-no-static-element-interactions/input.svelte index ee7ed4f084..8829d784c8 100644 --- a/packages/svelte/tests/validator/samples/a11y-no-static-element-interactions/input.svelte +++ b/packages/svelte/tests/validator/samples/a11y-no-static-element-interactions/input.svelte @@ -17,3 +17,6 @@
{}}>
{}} on:mouseup={() => {}} on:copy={() => {}}>link +
{}}>
+
{}}>
+
{}}>
diff --git a/packages/svelte/tests/validator/samples/a11y-no-static-element-interactions/warnings.json b/packages/svelte/tests/validator/samples/a11y-no-static-element-interactions/warnings.json index ab4b58a839..41325a8756 100644 --- a/packages/svelte/tests/validator/samples/a11y-no-static-element-interactions/warnings.json +++ b/packages/svelte/tests/validator/samples/a11y-no-static-element-interactions/warnings.json @@ -22,5 +22,41 @@ "column": 0, "line": 19 } + }, + { + "code": "a11y_no_static_element_interactions", + "end": { + "column": 37, + "line": 20 + }, + "message": "`
` with a pointerdown handler must have an ARIA role", + "start": { + "column": 0, + "line": 20 + } + }, + { + "code": "a11y_no_static_element_interactions", + "end": { + "column": 38, + "line": 21 + }, + "message": "`
` with a pointerenter handler must have an ARIA role", + "start": { + "column": 0, + "line": 21 + } + }, + { + "code": "a11y_no_static_element_interactions", + "end": { + "column": 36, + "line": 22 + }, + "message": "`
` with a touchstart handler must have an ARIA role", + "start": { + "column": 0, + "line": 22 + } } ]