Skip to content

Commit 602fd86

Browse files
committed
fix: Dispatch input event after content has changed. This is also necessary for pat-autosubmit to work.
1 parent a5686be commit 602fd86

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

src/code-editor.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import "regenerator-runtime/runtime"; // needed for ``await`` support
22
import Base from "@patternslib/patternslib/src/core/base";
33
import Parser from "@patternslib/patternslib/src/core/parser";
4+
import events from "@patternslib/patternslib/src/core/events";
45
import utils from "@patternslib/patternslib/src/core/utils";
56

67
export const parser = new Parser("code-editor");
@@ -87,6 +88,7 @@ export default Base.extend({
8788
// initializing elements.
8889
this.codeeditor.onUpdate((code) => {
8990
this.el.value = code;
91+
this.el.dispatchEvent(events.input_event());
9092
});
9193
}
9294
},

src/code-editor.test.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,29 @@ describe("pat-code-editor", () => {
4141
expect(editor_el.querySelectorAll(".token").length).toBeGreaterThan(0);
4242
expect(editor_el.innerHTML.includes("<")).toBe(true);
4343
});
44+
45+
it("Emits input events on update.", async () => {
46+
document.body.innerHTML = `
47+
<textarea class="pat-code-editor"></textarea>
48+
`;
49+
50+
const el = document.querySelector(".pat-code-editor");
51+
52+
new Pattern(el);
53+
await utils.timeout(1);
54+
55+
const editor_el = document.querySelector("pre code");
56+
57+
let changed = false;
58+
el.addEventListener("input", () => {
59+
changed = true;
60+
});
61+
62+
editor_el.innerHTML = "okay-ish";
63+
editor_el.dispatchEvent(new Event("keyup")); // codejar listens on keyup.
64+
await utils.timeout(1);
65+
66+
expect(el.value).toBe("okay-ish");
67+
expect(changed).toBe(true);
68+
});
4469
});

0 commit comments

Comments
 (0)