Skip to content

Commit c5942d2

Browse files
committed
feat(core events): Add blur and focus event factories.
1 parent 58ddc8e commit c5942d2

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

src/core/events.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,13 @@ const await_pattern_init = (pattern) => {
9797
* Event factories
9898
*/
9999

100+
const blur_event = () => {
101+
return new Event("blur", {
102+
bubbles: false,
103+
cancelable: false,
104+
});
105+
};
106+
100107
const click_event = () => {
101108
return new Event("click", {
102109
bubbles: true,
@@ -111,6 +118,13 @@ const change_event = () => {
111118
});
112119
};
113120

121+
const focus_event = () => {
122+
return new Event("focus", {
123+
bubbles: false,
124+
cancelable: false,
125+
});
126+
};
127+
114128
const input_event = () => {
115129
return new Event("input", {
116130
bubbles: true,
@@ -151,8 +165,10 @@ export default {
151165
remove_event_listener: remove_event_listener,
152166
await_event: await_event,
153167
await_pattern_init: await_pattern_init,
168+
blur_event: blur_event,
154169
click_event: click_event,
155170
change_event: change_event,
171+
focus_event: focus_event,
156172
input_event: input_event,
157173
mousedown_event: mousedown_event,
158174
mouseup_event: mouseup_event,

src/core/events.test.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,18 @@ describe("core.events tests", () => {
9696
inner = el.querySelector("#inner");
9797
});
9898

99+
it("blur event", async () => {
100+
outer.addEventListener("blur", () => {
101+
catched = "outer";
102+
});
103+
inner.addEventListener("blur", () => {
104+
catched = "inner";
105+
});
106+
inner.dispatchEvent(events.blur_event());
107+
await utils.timeout(1);
108+
expect(catched).toBe("inner");
109+
});
110+
99111
it("click event", async () => {
100112
outer.addEventListener("click", () => {
101113
catched = "outer";
@@ -114,6 +126,18 @@ describe("core.events tests", () => {
114126
expect(catched).toBe("outer");
115127
});
116128

129+
it("focus event", async () => {
130+
outer.addEventListener("focus", () => {
131+
catched = "outer";
132+
});
133+
inner.addEventListener("focus", () => {
134+
catched = "inner";
135+
});
136+
inner.dispatchEvent(events.focus_event());
137+
await utils.timeout(1);
138+
expect(catched).toBe("inner");
139+
});
140+
117141
it("input event", async () => {
118142
outer.addEventListener("input", () => {
119143
catched = "outer";

0 commit comments

Comments
 (0)