Skip to content

Commit 6cd11cb

Browse files
authored
Support type on <ct-input /> (#1422)
* Support all input types * Use tx and re-render on cell changes * Add input timing controller abstraction * Remove TODO * Format timing controller * Port common-code-editor to ct-code-editor * Include `<ct-code-editor />` in the test recipe
1 parent ba0cc05 commit 6cd11cb

File tree

10 files changed

+1436
-43
lines changed

10 files changed

+1436
-43
lines changed

deno.lock

Lines changed: 126 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import { describe, it } from "@std/testing/bdd";
2+
import { expect } from "@std/expect";
3+
import { CTCodeEditor, MimeType } from "./ct-code-editor.ts";
4+
5+
describe("CTCodeEditor", () => {
6+
it("should be defined", () => {
7+
expect(CTCodeEditor).toBeDefined();
8+
});
9+
10+
it("should have customElement definition", () => {
11+
expect(CTCodeEditor.name).toBe("CTCodeEditor");
12+
});
13+
14+
it("should create element instance", () => {
15+
const element = new CTCodeEditor();
16+
expect(element).toBeInstanceOf(CTCodeEditor);
17+
});
18+
19+
it("should have default properties", () => {
20+
const element = new CTCodeEditor();
21+
expect(element.value).toBe("");
22+
expect(element.language).toBe(MimeType.markdown);
23+
expect(element.disabled).toBe(false);
24+
expect(element.readonly).toBe(false);
25+
expect(element.placeholder).toBe("");
26+
expect(element.timingStrategy).toBe("debounce");
27+
expect(element.timingDelay).toBe(500);
28+
});
29+
30+
it("should have MimeType constants", () => {
31+
expect(MimeType.javascript).toBe("text/javascript");
32+
expect(MimeType.typescript).toBe("text/x.typescript");
33+
expect(MimeType.markdown).toBe("text/markdown");
34+
expect(MimeType.json).toBe("application/json");
35+
expect(MimeType.css).toBe("text/css");
36+
expect(MimeType.html).toBe("text/html");
37+
expect(MimeType.jsx).toBe("text/x.jsx");
38+
});
39+
40+
it("should allow setting properties", () => {
41+
const element = new CTCodeEditor();
42+
element.value = "const x = 42;";
43+
element.language = MimeType.javascript;
44+
element.readonly = true;
45+
element.timingStrategy = "immediate";
46+
element.timingDelay = 100;
47+
48+
expect(element.value).toBe("const x = 42;");
49+
expect(element.language).toBe(MimeType.javascript);
50+
expect(element.readonly).toBe(true);
51+
expect(element.timingStrategy).toBe("immediate");
52+
expect(element.timingDelay).toBe(100);
53+
});
54+
});

0 commit comments

Comments
 (0)