Skip to content

Commit ac371e0

Browse files
committed
feat(core events): Add await_pattern_init helper which can be used to await the event when a pattern instance is initialized.
1 parent 1e264c1 commit ac371e0

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

src/core/events.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,22 @@ const await_event = (el, event_name) => {
7777
);
7878
};
7979

80+
/**
81+
* Await pattern init.
82+
*
83+
* Usage:
84+
* await events.await_pattern_init(PATTERN);
85+
*
86+
* @param {Pattern instance} pattern - The pattern instance.
87+
*
88+
* @returns {Promise} - Returns a Promise which can be used for ``await`` and which will be resolved when the event is throwm.
89+
*
90+
*/
91+
const await_pattern_init = (pattern) => {
92+
// See: https://stackoverflow.com/a/44746691/1337474
93+
return new Promise((resolve) => pattern.one("init", resolve));
94+
};
95+
8096
/**
8197
* Event factories
8298
*/
@@ -120,6 +136,7 @@ export default {
120136
add_event_listener: add_event_listener,
121137
remove_event_listener: remove_event_listener,
122138
await_event: await_event,
139+
await_pattern_init: await_pattern_init,
123140
click_event: click_event,
124141
change_event: change_event,
125142
input_event: input_event,

src/core/events.test.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import Base from "./base";
12
import events from "./events";
23
import utils from "./utils";
34

@@ -60,6 +61,22 @@ describe("core.events tests", () => {
6061
// If test reaches this expect statement, all is fine.
6162
expect(true).toBe(true);
6263
});
64+
65+
it("Awaits a pattern to be initialized", async () => {
66+
const pat = Base.extend({
67+
name: "tmp",
68+
trigger: ".pat-tmp",
69+
init: function () {},
70+
});
71+
72+
const el = document.createElement("div");
73+
const instance = new pat(el);
74+
75+
await events.await_pattern_init(instance);
76+
77+
// If test reaches this expect statement, all is fine.
78+
expect(true).toBe(true);
79+
});
6380
});
6481

6582
describe("2 - event factories", () => {

0 commit comments

Comments
 (0)