diff --git a/.changeset/green-tables-warn.md b/.changeset/green-tables-warn.md new file mode 100644 index 0000000000..1952476fb9 --- /dev/null +++ b/.changeset/green-tables-warn.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: warn on click handlers for table row and cell elements 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 be3af1e59f..4c472df546 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 @@ -292,11 +292,12 @@ export function check_element(node, context) { if (handlers.has('click')) { const is_non_presentation_role = role_static_value !== null && !is_presentation_role(role_static_value); + const is_table_cell_or_row = node.name === 'tr' || node.name === 'td' || node.name === 'th'; if ( !is_dynamic_element && !is_hidden_from_screen_reader(node.name, attribute_map) && (!role || is_non_presentation_role) && - !is_interactive && + (!is_interactive || is_table_cell_or_row) && !has_spread ) { const has_key_event = diff --git a/packages/svelte/tests/validator/samples/a11y-click-events-have-key-events/input.svelte b/packages/svelte/tests/validator/samples/a11y-click-events-have-key-events/input.svelte index c525ebe813..4aea444769 100644 --- a/packages/svelte/tests/validator/samples/a11y-click-events-have-key-events/input.svelte +++ b/packages/svelte/tests/validator/samples/a11y-click-events-have-key-events/input.svelte @@ -26,6 +26,9 @@ +