release: WRNexusJS 0.3.5

This commit is contained in:
2026-07-24 12:46:44 +05:30
parent 44ba847210
commit c81dedff17
2114 changed files with 65790 additions and 150559 deletions
+41
View File
@@ -41,6 +41,23 @@ test("@event (data-on-click) mutates a signal and re-renders", () => {
expect(btn.textContent).toBe("2");
});
test("declared component events emit through the generic $emit function", () => {
const win = mount(
`<div data-scope="" data-wrn-events="complete">
<button data-on-click="$emit('complete', { value: '4829' })">Complete</button>
</div>`,
);
const root = win.document.querySelector("[data-wrn-events]")!;
let detail: Record<string, unknown> | undefined;
root.addEventListener("complete", (event) => {
detail = (event as unknown as CustomEvent).detail;
});
win.document.querySelector("button")!.click();
expect(detail).toEqual({ value: "4829" });
});
test("nested scopes don't clobber each other (regression)", () => {
// An empty outer scope must not touch inner scopes' values.
const win = mount(
@@ -131,6 +148,26 @@ test("expression evaluator: member access, ternary, comparison, calls", () => {
expect(win.document.getElementById("c")!.textContent).toBe("3");
});
test("logical expressions consume their right-hand side when the result short-circuits", () => {
const win = mount(
`<div data-scope="leftFalse: false, leftTrue: true">
<span id="and" data-text="leftFalse && 123"></span>
<span id="or" data-text="leftTrue || 456"></span>
</div>`,
);
expect(win.document.getElementById("and")!.textContent).toBe("false");
expect(win.document.getElementById("or")!.textContent).toBe("true");
});
test("expression evaluator supports flatMap callbacks", () => {
const win = mount(
`<div data-scope="groups: [{items: [1, 2]}, {items: [3]}]">
<span data-text="groups.flatMap((group) => group.items)"></span>
</div>`,
);
expect(win.document.querySelector("span")!.textContent).toBe("1,2,3");
});
test("data-show toggles visibility on a reactive expression (tabs pattern)", () => {
const win = mount(
`<div data-scope="tab: 0">
@@ -143,9 +180,13 @@ test("data-show toggles visibility on a reactive expression (tabs pattern)", ()
(win.document.getElementById(id) as unknown as HTMLElement).style.display;
expect(disp("a")).toBe("");
expect(disp("b")).toBe("none");
expect(win.document.getElementById("a")!.getAttribute("data-show")).toBe("true");
expect(win.document.getElementById("b")!.getAttribute("data-show")).toBe("false");
(win.document.querySelector("button") as unknown as HTMLElement).click();
expect(disp("a")).toBe("none");
expect(disp("b")).toBe("");
expect(win.document.getElementById("a")!.getAttribute("data-show")).toBe("false");
expect(win.document.getElementById("b")!.getAttribute("data-show")).toBe("true");
});
test("reactive attribute bindings update input and accessibility attributes", () => {