Skip to content

Commit 6f53c0d

Browse files
committed
Feat: Add ability to dispatch events and shared events from behaviors
1 parent a1814ee commit 6f53c0d

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

packages/query/src/behavior.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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,

packages/query/src/register-behavior.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ export const registerBehavior = (behavior) => {
124124
const behaviorConfig = {
125125
sharedBehavior, // setup can pass shared behavior across instances
126126
$element,
127+
$elements,
127128
Query,
128129
...runtimeConfig,
129130
settings: runtimeSettings,

0 commit comments

Comments
 (0)