From e417d3a2d281a5ec9b595be5ffbd47efe57b28c3 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Mon, 29 Jul 2024 11:14:04 +0100 Subject: [PATCH] fix: remove implicit passive behavior from OnDirective events (#12645) Fixes #12639 --- .changeset/modern-peaches-cheer.md | 5 +++++ .../compiler/phases/3-transform/client/visitors/template.js | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 .changeset/modern-peaches-cheer.md diff --git a/.changeset/modern-peaches-cheer.md b/.changeset/modern-peaches-cheer.md new file mode 100644 index 0000000000..b02545e091 --- /dev/null +++ b/.changeset/modern-peaches-cheer.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: remove implicit passive behavior from OnDirective events diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js index ca78a33a1c..9006d68aca 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js @@ -1298,7 +1298,11 @@ function serialize_event(node, metadata, context) { args.push(b.literal(true)); } else if (node.modifiers.includes('nonpassive')) { args.push(b.literal(false)); - } else if (PassiveEvents.includes(node.name)) { + } else if ( + PassiveEvents.includes(node.name) && + /** @type {OnDirective} */ (node).type !== 'OnDirective' + ) { + // For on:something events we don't apply passive behaviour to match Svelte 4. args.push(b.literal(true)); }