Skip to content

Commit d95a71f

Browse files
committed
tech(core events): Add pat-update event factory which initializes itself with options and bubbles up.
1 parent e1c3b59 commit d95a71f

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

src/core/events.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,28 @@ const generic_event = (name) => {
181181
});
182182
};
183183

184+
185+
/** Patternslib specifc event factories
186+
*/
187+
188+
class UpdateEvent extends CustomEvent {
189+
constructor(options) {
190+
super("pat-update", {
191+
bubbles: true,
192+
cancelable: true,
193+
detail: options
194+
});
195+
}
196+
}
197+
198+
const update_event = (options) => {
199+
return new UpdateEvent(options);
200+
}
201+
202+
203+
/** Web API event factories
204+
*/
205+
184206
const blur_event = () => {
185207
return new Event("blur", {
186208
bubbles: false,
@@ -266,6 +288,7 @@ export default {
266288
await_event: await_event,
267289
await_pattern_init: await_pattern_init,
268290
generic_event: generic_event,
291+
update_event: update_event,
269292
blur_event: blur_event,
270293
click_event: click_event,
271294
change_event: change_event,

src/core/events.test.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,26 @@ describe("core.events tests", () => {
467467
expect(catched).toBe("outer");
468468
});
469469

470+
it("update event", async () => {
471+
outer.addEventListener("pat-update", () => {
472+
catched = "outer";
473+
});
474+
inner.dispatchEvent(events.update_event());
475+
await utils.timeout(1);
476+
expect(catched).toBe("outer");
477+
});
478+
479+
it("update event with data", async () => {
480+
let event;
481+
outer.addEventListener("pat-update", (e) => {
482+
event = e;
483+
});
484+
const data = {"foo": "bar"};
485+
inner.dispatchEvent(events.update_event(data));
486+
await utils.timeout(1);
487+
expect(event.detail).toBe(data);
488+
});
489+
470490
it("blur event", async () => {
471491
outer.addEventListener("blur", () => {
472492
catched = "outer";

0 commit comments

Comments
 (0)