@@ -37,6 +37,9 @@ export class Behavior {
3737 // $element to initialize
3838 $element,
3939
40+ // $elements in group
41+ $elements,
42+
4043 // css to be added to page
4144 css = '' ,
4245
@@ -69,6 +72,7 @@ export class Behavior {
6972 this . Query = Query ;
7073
7174 this . $element = $element ;
75+ this . $elements = $elements ;
7276 this . element = $element . el ( ) ;
7377
7478 // handle run-time settings
@@ -433,8 +437,8 @@ export class Behavior {
433437 }
434438 }
435439
436- dispatchEvent ( eventName , detail = { } , eventSettings = { } ) {
437- this . element . dispatchEvent (
440+ dispatchEvent ( eventName , detail = { } , eventSettings = { } , element = this . element ) {
441+ element . dispatchEvent (
438442 new CustomEvent ( eventName , {
439443 detail,
440444 bubbles : true ,
@@ -444,6 +448,13 @@ export class Behavior {
444448 ) ;
445449 }
446450
451+ // dispatch an event across entire group
452+ dispatchGroupEvent ( eventName , detail = { } , eventSettings = { } ) {
453+ return this . $elements . get ( ) . map ( element => {
454+ this . dispatchEvent ( eventName , detail , eventSettings , element ) ;
455+ } ) ;
456+ }
457+
447458 // Lookup method or property using natural language patterns (internal helper)
448459 // Modernized version of original SUI invoke algorithm
449460 lookup ( query ) {
@@ -537,6 +548,8 @@ export class Behavior {
537548 self,
538549 behavior : self ,
539550 namespace : self . namespace ,
551+ dispatchEvent : self . dispatchEvent . bind ( this ) ,
552+ dispatchGroupEvent : self . dispatchGroupEvent . bind ( this ) ,
540553
541554 // element index information
542555 index : self . elementIndex ,
0 commit comments