File tree Expand file tree Collapse file tree 4 files changed +52
-0
lines changed
src/internal/client/dom/elements
tests/runtime-runes/samples/remove-spreaded-handlers Expand file tree Collapse file tree 4 files changed +52
-0
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ ' svelte ' : patch
3+ ---
4+
5+ fix: remove spreaded event handlers when they become nullish
Original file line number Diff line number Diff line change @@ -281,6 +281,9 @@ export function set_attributes(
281281 element [ `__${ event_name } ` ] = value ;
282282 delegate ( [ event_name ] ) ;
283283 }
284+ } else if ( delegated ) {
285+ // @ts -ignore
286+ element [ `__${ event_name } ` ] = undefined ;
284287 }
285288 } else if ( key === 'style' && value != null ) {
286289 element . style . cssText = value + '' ;
Original file line number Diff line number Diff line change 1+ import { ok , test } from '../../test' ;
2+ import { flushSync } from 'svelte' ;
3+
4+ export default test ( {
5+ async test ( { assert, target, instance } ) {
6+ const p = target . querySelector ( 'p' ) ;
7+ const btn = target . querySelector ( 'button' ) ;
8+ const input = target . querySelector ( 'input' ) ;
9+ ok ( p ) ;
10+
11+ flushSync ( ( ) => {
12+ btn ?. click ( ) ;
13+ } ) ;
14+ assert . equal ( p . innerHTML , '1' ) ;
15+
16+ flushSync ( ( ) => {
17+ input ?. click ( ) ;
18+ } ) ;
19+ flushSync ( ( ) => {
20+ btn ?. click ( ) ;
21+ } ) ;
22+ assert . equal ( p . innerHTML , '1' ) ;
23+
24+ flushSync ( ( ) => {
25+ input ?. click ( ) ;
26+ } ) ;
27+ flushSync ( ( ) => {
28+ btn ?. click ( ) ;
29+ } ) ;
30+ assert . equal ( p . innerHTML , '2' ) ;
31+ }
32+ } ) ;
Original file line number Diff line number Diff line change 1+ <script >
2+ let checked = $state (true )
3+ let count = $state (0 )
4+
5+ const onclick = $derived (checked ? (() => { count++ }) : undefined )
6+ </script >
7+
8+ <p >
9+ {count }
10+ </p >
11+ <input type =" checkbox" bind:checked />
12+ <button {...{onclick }}></button >
You can’t perform that action at this time.
0 commit comments