aboutsummaryrefslogtreecommitdiff
path: root/test/snippets/simple-lit-example.ts
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--test/snippets/simple-lit-example.ts76
1 files changed, 76 insertions, 0 deletions
diff --git a/test/snippets/simple-lit-example.ts b/test/snippets/simple-lit-example.ts
new file mode 100644
index 000000000..34446e418
--- /dev/null
+++ b/test/snippets/simple-lit-example.ts
@@ -0,0 +1,76 @@
+import { LitElement, html, css } from "lit";
+import { customElement, property, eventOptions } from "lit/decorators.js";
+
+var loadedResolve;
+var loadedPromise = new Promise((resolve) => {
+ loadedResolve = resolve;
+});
+
+if (document?.readyState === "loading") {
+ document.addEventListener(
+ "DOMContentLoaded",
+ () => {
+ loadedResolve();
+ },
+ { once: true }
+ );
+} else {
+ loadedResolve();
+}
+
+@customElement("my-element")
+export class MyElement extends LitElement {
+ static styles = css`
+ :host {
+ display: inline-block;
+ padding: 10px;
+ background: lightgray;
+ }
+ .planet {
+ color: var(--planet-color, blue);
+ }
+ `;
+
+ @property() planet = "Earth";
+
+ render() {
+ return html`
+ <span @click=${this.togglePlanet} class="planet" id="planet-id"
+ >${this.planet}</span
+ >
+ `;
+ }
+
+ @eventOptions({ once: true })
+ togglePlanet() {
+ this.planet = this.planet === "Earth" ? "Mars" : "Earth";
+ }
+}
+
+function setup() {
+ let element = document.createElement("my-element");
+ element.id = "my-element-id";
+ document.body.appendChild(element);
+}
+
+export async function test() {
+ setup();
+ await loadedPromise;
+
+ let element = document.getElementById("my-element-id");
+ let shadowRoot = element.shadowRoot;
+ let planet = shadowRoot.getElementById("planet-id");
+ if (element.__planet !== "Earth") {
+ throw new Error("Unexpected planet name: " + element.__planet);
+ }
+ planet.click();
+ if (element.__planet !== "Mars") {
+ throw new Error("Unexpected planet name: " + element.__planet);
+ }
+ planet.click();
+ if (element.__planet !== "Mars") {
+ throw new Error("Unexpected planet name: " + element.__planet);
+ }
+
+ return testDone(import.meta.url);
+}