@@ -153,7 +153,7 @@ export default class BindingWrapper {
153
153
case 'group' :
154
154
{
155
155
block . renderer . add_to_context ( '$$binding_groups' ) ;
156
- this . binding_group . elements . push ( this . parent . var ) ;
156
+ this . binding_group . add_element ( block , this . parent . var ) ;
157
157
158
158
if ( ( this . parent as ElementWrapper ) . has_dynamic_value ) {
159
159
update_or_condition = ( this . parent as ElementWrapper ) . dynamic_value_condition ;
@@ -323,7 +323,11 @@ function get_binding_group(renderer: Renderer, binding: BindingWrapper, block: B
323
323
parent = parent . parent ;
324
324
}
325
325
326
- const elements = [ ] ;
326
+ /**
327
+ * When using bind:group with logic blocks, the inputs with bind:group may be scattered across different blocks.
328
+ * This therefore keeps track of all the <input> elements that have the same bind:group within the same block.
329
+ */
330
+ const elements = new Map < Block , any > ( ) ;
327
331
328
332
contexts . forEach ( context => {
329
333
renderer . add_to_context ( context , true ) ;
@@ -343,8 +347,13 @@ function get_binding_group(renderer: Renderer, binding: BindingWrapper, block: B
343
347
contexts,
344
348
list_dependencies,
345
349
keypath,
346
- elements,
347
- render ( ) {
350
+ add_element ( block , element ) {
351
+ if ( ! elements . has ( block ) ) {
352
+ elements . set ( block , [ ] ) ;
353
+ }
354
+ elements . get ( block ) . push ( element ) ;
355
+ } ,
356
+ render ( block ) {
348
357
const local_name = block . get_unique_name ( 'binding_group' ) ;
349
358
const binding_group = block . renderer . reference ( '$$binding_groups' ) ;
350
359
block . add_variable ( local_name ) ;
@@ -362,7 +371,7 @@ function get_binding_group(renderer: Renderer, binding: BindingWrapper, block: B
362
371
) ;
363
372
}
364
373
block . chunks . hydrate . push (
365
- b `${ local_name } .p(${ elements } )`
374
+ b `${ local_name } .p(${ elements . get ( block ) } )`
366
375
) ;
367
376
block . chunks . destroy . push (
368
377
b `${ local_name } .r()`
0 commit comments