@joist/templating 4.5.0 → 4.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/lib/bind.ts +13 -4
- package/src/lib/elements/async.element.ts +4 -4
- package/src/lib/elements/bind.element.test.ts +2 -2
- package/src/lib/elements/bind.element.ts +4 -2
- package/src/lib/elements/for.element.test.ts +10 -10
- package/src/lib/elements/for.element.ts +5 -3
- package/src/lib/elements/if.element.ts +4 -2
- package/src/lib/events.ts +2 -2
- package/src/lib/expression.ts +4 -3
- package/target/lib/bind.d.ts +0 -5
- package/target/lib/bind.js +0 -45
- package/target/lib/bind.js.map +0 -1
- package/target/lib/bind.test.d.ts +0 -1
- package/target/lib/bind.test.js +0 -76
- package/target/lib/bind.test.js.map +0 -1
- package/target/lib/define.d.ts +0 -16
- package/target/lib/define.js +0 -14
- package/target/lib/define.js.map +0 -1
- package/target/lib/elements/async.element.d.ts +0 -13
- package/target/lib/elements/async.element.js +0 -133
- package/target/lib/elements/async.element.js.map +0 -1
- package/target/lib/elements/async.element.test.d.ts +0 -1
- package/target/lib/elements/async.element.test.js +0 -180
- package/target/lib/elements/async.element.test.js.map +0 -1
- package/target/lib/elements/bind.element.d.ts +0 -13
- package/target/lib/elements/bind.element.js +0 -144
- package/target/lib/elements/bind.element.js.map +0 -1
- package/target/lib/elements/bind.element.test.d.ts +0 -1
- package/target/lib/elements/bind.element.test.js +0 -150
- package/target/lib/elements/bind.element.test.js.map +0 -1
- package/target/lib/elements/for.element.d.ts +0 -15
- package/target/lib/elements/for.element.js +0 -215
- package/target/lib/elements/for.element.js.map +0 -1
- package/target/lib/elements/for.element.test.d.ts +0 -1
- package/target/lib/elements/for.element.test.js +0 -188
- package/target/lib/elements/for.element.test.js.map +0 -1
- package/target/lib/elements/if.element.d.ts +0 -9
- package/target/lib/elements/if.element.js +0 -108
- package/target/lib/elements/if.element.js.map +0 -1
- package/target/lib/elements/if.element.test.d.ts +0 -1
- package/target/lib/elements/if.element.test.js +0 -306
- package/target/lib/elements/if.element.test.js.map +0 -1
- package/target/lib/elements/scope.element.d.ts +0 -3
- package/target/lib/elements/scope.element.js +0 -37
- package/target/lib/elements/scope.element.js.map +0 -1
- package/target/lib/elements/scope.element.test.d.ts +0 -1
- package/target/lib/elements/scope.element.test.js +0 -24
- package/target/lib/elements/scope.element.test.js.map +0 -1
- package/target/lib/elements/value.element.d.ts +0 -5
- package/target/lib/elements/value.element.js +0 -62
- package/target/lib/elements/value.element.js.map +0 -1
- package/target/lib/elements/value.element.test.d.ts +0 -1
- package/target/lib/elements/value.element.test.js +0 -65
- package/target/lib/elements/value.element.test.js.map +0 -1
- package/target/lib/events.d.ts +0 -16
- package/target/lib/events.js +0 -10
- package/target/lib/events.js.map +0 -1
- package/target/lib/expression.d.ts +0 -13
- package/target/lib/expression.js +0 -87
- package/target/lib/expression.js.map +0 -1
- package/target/lib/expression.test.d.ts +0 -1
- package/target/lib/expression.test.js +0 -171
- package/target/lib/expression.test.js.map +0 -1
- package/target/lib.d.ts +0 -2
- package/target/lib.js +0 -3
- package/target/lib.js.map +0 -1
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
import "../define.js";
|
|
2
|
-
import { fixtureSync, html } from "@open-wc/testing";
|
|
3
|
-
import { assert } from "chai";
|
|
4
|
-
it("should show loading template when promise is pending", async () => {
|
|
5
|
-
const element = fixtureSync(html `
|
|
6
|
-
<div
|
|
7
|
-
@joist::value=${(e) => {
|
|
8
|
-
e.update({ oldValue: null, newValue: new Promise(() => { }) });
|
|
9
|
-
}}
|
|
10
|
-
>
|
|
11
|
-
<j-async bind="test">
|
|
12
|
-
<template loading>Loading...</template>
|
|
13
|
-
<template success>Success!</template>
|
|
14
|
-
<template error>Error!</template>
|
|
15
|
-
</j-async>
|
|
16
|
-
</div>
|
|
17
|
-
`);
|
|
18
|
-
assert.equal(element.textContent?.trim(), "Loading...");
|
|
19
|
-
});
|
|
20
|
-
it("should show success template when promise resolves", async () => {
|
|
21
|
-
const element = fixtureSync(html `
|
|
22
|
-
<div
|
|
23
|
-
@joist::value=${(e) => {
|
|
24
|
-
e.update({ oldValue: null, newValue: Promise.resolve("data") });
|
|
25
|
-
}}
|
|
26
|
-
>
|
|
27
|
-
<j-async bind="test">
|
|
28
|
-
<template loading>Loading...</template>
|
|
29
|
-
<template success>Success!</template>
|
|
30
|
-
<template error>Error!</template>
|
|
31
|
-
</j-async>
|
|
32
|
-
</div>
|
|
33
|
-
`);
|
|
34
|
-
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
35
|
-
assert.equal(element.textContent?.trim(), "Success!");
|
|
36
|
-
});
|
|
37
|
-
it("should show error template when promise rejects", async () => {
|
|
38
|
-
const element = fixtureSync(html `
|
|
39
|
-
<div
|
|
40
|
-
@joist::value=${(e) => {
|
|
41
|
-
e.update({ oldValue: null, newValue: Promise.reject("error") });
|
|
42
|
-
}}
|
|
43
|
-
>
|
|
44
|
-
<j-async bind="test">
|
|
45
|
-
<template loading>Loading...</template>
|
|
46
|
-
<template success>Success!</template>
|
|
47
|
-
<template error>Error!</template>
|
|
48
|
-
</j-async>
|
|
49
|
-
</div>
|
|
50
|
-
`);
|
|
51
|
-
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
52
|
-
assert.equal(element.textContent?.trim(), "Error!");
|
|
53
|
-
});
|
|
54
|
-
it("should handle state transitions", async () => {
|
|
55
|
-
const element = fixtureSync(html `
|
|
56
|
-
<div
|
|
57
|
-
@joist::value=${(e) => {
|
|
58
|
-
const promise = new Promise((resolve) => {
|
|
59
|
-
setTimeout(() => resolve("data"), 100);
|
|
60
|
-
});
|
|
61
|
-
e.update({ oldValue: null, newValue: promise });
|
|
62
|
-
}}
|
|
63
|
-
>
|
|
64
|
-
<j-async bind="test">
|
|
65
|
-
<template loading>Loading...</template>
|
|
66
|
-
<template success>Success!</template>
|
|
67
|
-
<template error>Error!</template>
|
|
68
|
-
</j-async>
|
|
69
|
-
</div>
|
|
70
|
-
`);
|
|
71
|
-
assert.equal(element.textContent?.trim(), "Loading...");
|
|
72
|
-
await new Promise((resolve) => setTimeout(resolve, 150));
|
|
73
|
-
assert.equal(element.textContent?.trim(), "Success!");
|
|
74
|
-
});
|
|
75
|
-
it("should show loading template when AsyncState is loading", () => {
|
|
76
|
-
const element = fixtureSync(html `
|
|
77
|
-
<div
|
|
78
|
-
@joist::value=${(e) => {
|
|
79
|
-
e.update({ oldValue: null, newValue: { status: "loading" } });
|
|
80
|
-
}}
|
|
81
|
-
>
|
|
82
|
-
<j-async bind="test">
|
|
83
|
-
<template loading>Loading...</template>
|
|
84
|
-
<template success>Success!</template>
|
|
85
|
-
<template error>Error!</template>
|
|
86
|
-
</j-async>
|
|
87
|
-
</div>
|
|
88
|
-
`);
|
|
89
|
-
assert.equal(element.textContent?.trim(), "Loading...");
|
|
90
|
-
});
|
|
91
|
-
it("should show success template when AsyncState is success", () => {
|
|
92
|
-
const element = fixtureSync(html `
|
|
93
|
-
<div
|
|
94
|
-
@joist::value=${(e) => {
|
|
95
|
-
e.update({ oldValue: null, newValue: { status: "success", data: "test data" } });
|
|
96
|
-
}}
|
|
97
|
-
>
|
|
98
|
-
<j-async bind="test">
|
|
99
|
-
<template loading>Loading...</template>
|
|
100
|
-
<template success>Success!</template>
|
|
101
|
-
<template error>Error!</template>
|
|
102
|
-
</j-async>
|
|
103
|
-
</div>
|
|
104
|
-
`);
|
|
105
|
-
assert.equal(element.textContent?.trim(), "Success!");
|
|
106
|
-
});
|
|
107
|
-
it("should show error template when AsyncState is error", () => {
|
|
108
|
-
const element = fixtureSync(html `
|
|
109
|
-
<div
|
|
110
|
-
@joist::value=${(e) => {
|
|
111
|
-
e.update({ oldValue: null, newValue: { status: "error", error: "test error" } });
|
|
112
|
-
}}
|
|
113
|
-
>
|
|
114
|
-
<j-async bind="test">
|
|
115
|
-
<template loading>Loading...</template>
|
|
116
|
-
<template success>Success!</template>
|
|
117
|
-
<template error>Error!</template>
|
|
118
|
-
</j-async>
|
|
119
|
-
</div>
|
|
120
|
-
`);
|
|
121
|
-
assert.equal(element.textContent?.trim(), "Error!");
|
|
122
|
-
});
|
|
123
|
-
it("should handle AsyncState transitions", () => {
|
|
124
|
-
const element = fixtureSync(html `
|
|
125
|
-
<div
|
|
126
|
-
@joist::value=${(e) => {
|
|
127
|
-
e.update({ oldValue: null, newValue: { status: "loading" } });
|
|
128
|
-
setTimeout(() => {
|
|
129
|
-
e.update({
|
|
130
|
-
oldValue: { status: "loading" },
|
|
131
|
-
newValue: { status: "success", data: "test data" },
|
|
132
|
-
});
|
|
133
|
-
}, 100);
|
|
134
|
-
}}
|
|
135
|
-
>
|
|
136
|
-
<j-async bind="test">
|
|
137
|
-
<template loading>Loading...</template>
|
|
138
|
-
<template success>Success!</template>
|
|
139
|
-
<template error>Error!</template>
|
|
140
|
-
</j-async>
|
|
141
|
-
</div>
|
|
142
|
-
`);
|
|
143
|
-
assert.equal(element.textContent?.trim(), "Loading...");
|
|
144
|
-
return new Promise((resolve) => {
|
|
145
|
-
setTimeout(() => {
|
|
146
|
-
assert.equal(element.textContent?.trim(), "Success!");
|
|
147
|
-
resolve(undefined);
|
|
148
|
-
}, 150);
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
it("should wait for depends-on before dispatching events", async () => {
|
|
152
|
-
let eventDispatched = false;
|
|
153
|
-
customElements.define("dependency-1", class extends HTMLElement {
|
|
154
|
-
});
|
|
155
|
-
customElements.define("dependency-2", class extends HTMLElement {
|
|
156
|
-
});
|
|
157
|
-
fixtureSync(html `
|
|
158
|
-
<div
|
|
159
|
-
@joist::value=${(e) => {
|
|
160
|
-
if (e.expression.bindTo === "test") {
|
|
161
|
-
eventDispatched = true;
|
|
162
|
-
e.update({ oldValue: null, newValue: Promise.resolve("data") });
|
|
163
|
-
}
|
|
164
|
-
}}
|
|
165
|
-
>
|
|
166
|
-
<j-async bind="test" depends-on="dependency-1,dependency-2">
|
|
167
|
-
<template loading>Loading...</template>
|
|
168
|
-
<template success>Success!</template>
|
|
169
|
-
<template error>Error!</template>
|
|
170
|
-
</j-async>
|
|
171
|
-
</div>
|
|
172
|
-
`);
|
|
173
|
-
assert.isFalse(eventDispatched);
|
|
174
|
-
await Promise.all([
|
|
175
|
-
customElements.whenDefined("dependency-1"),
|
|
176
|
-
customElements.whenDefined("dependency-2"),
|
|
177
|
-
]);
|
|
178
|
-
assert.isTrue(eventDispatched);
|
|
179
|
-
});
|
|
180
|
-
//# sourceMappingURL=async.element.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"async.element.test.js","sourceRoot":"","sources":["../../../src/lib/elements/async.element.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { JExpression } from "../expression.js";
|
|
2
|
-
export declare class JAttrToken extends JExpression {
|
|
3
|
-
mapTo: string;
|
|
4
|
-
constructor(binding: string);
|
|
5
|
-
}
|
|
6
|
-
export declare class JoistBindElement extends HTMLElement {
|
|
7
|
-
#private;
|
|
8
|
-
accessor props: string;
|
|
9
|
-
accessor attrs: string;
|
|
10
|
-
accessor target: string;
|
|
11
|
-
accessor dependsOn: string;
|
|
12
|
-
connectedCallback(): Promise<void>;
|
|
13
|
-
}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import { attr, element, css, html } from "@joist/element";
|
|
3
|
-
import { JExpression } from "../expression.js";
|
|
4
|
-
import { JoistValueEvent } from "../events.js";
|
|
5
|
-
export class JAttrToken extends JExpression {
|
|
6
|
-
mapTo;
|
|
7
|
-
constructor(binding) {
|
|
8
|
-
const [mapTo, bindTo] = binding.split(":");
|
|
9
|
-
super(bindTo ?? mapTo);
|
|
10
|
-
this.mapTo = mapTo;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
let JoistBindElement = (() => {
|
|
14
|
-
let _classDecorators = [element({
|
|
15
|
-
shadowDom: [css `:host{display: contents;}`, html `<slot></slot>`],
|
|
16
|
-
})];
|
|
17
|
-
let _classDescriptor;
|
|
18
|
-
let _classExtraInitializers = [];
|
|
19
|
-
let _classThis;
|
|
20
|
-
let _classSuper = HTMLElement;
|
|
21
|
-
let _props_decorators;
|
|
22
|
-
let _props_initializers = [];
|
|
23
|
-
let _props_extraInitializers = [];
|
|
24
|
-
let _attrs_decorators;
|
|
25
|
-
let _attrs_initializers = [];
|
|
26
|
-
let _attrs_extraInitializers = [];
|
|
27
|
-
let _target_decorators;
|
|
28
|
-
let _target_initializers = [];
|
|
29
|
-
let _target_extraInitializers = [];
|
|
30
|
-
let _dependsOn_decorators;
|
|
31
|
-
let _dependsOn_initializers = [];
|
|
32
|
-
let _dependsOn_extraInitializers = [];
|
|
33
|
-
var JoistBindElement = class extends _classSuper {
|
|
34
|
-
static { _classThis = this; }
|
|
35
|
-
static {
|
|
36
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
37
|
-
_props_decorators = [attr()];
|
|
38
|
-
_attrs_decorators = [attr()];
|
|
39
|
-
_target_decorators = [attr()];
|
|
40
|
-
_dependsOn_decorators = [attr({
|
|
41
|
-
name: "depends-on",
|
|
42
|
-
})];
|
|
43
|
-
__esDecorate(this, null, _props_decorators, { kind: "accessor", name: "props", static: false, private: false, access: { has: obj => "props" in obj, get: obj => obj.props, set: (obj, value) => { obj.props = value; } }, metadata: _metadata }, _props_initializers, _props_extraInitializers);
|
|
44
|
-
__esDecorate(this, null, _attrs_decorators, { kind: "accessor", name: "attrs", static: false, private: false, access: { has: obj => "attrs" in obj, get: obj => obj.attrs, set: (obj, value) => { obj.attrs = value; } }, metadata: _metadata }, _attrs_initializers, _attrs_extraInitializers);
|
|
45
|
-
__esDecorate(this, null, _target_decorators, { kind: "accessor", name: "target", static: false, private: false, access: { has: obj => "target" in obj, get: obj => obj.target, set: (obj, value) => { obj.target = value; } }, metadata: _metadata }, _target_initializers, _target_extraInitializers);
|
|
46
|
-
__esDecorate(this, null, _dependsOn_decorators, { kind: "accessor", name: "dependsOn", static: false, private: false, access: { has: obj => "dependsOn" in obj, get: obj => obj.dependsOn, set: (obj, value) => { obj.dependsOn = value; } }, metadata: _metadata }, _dependsOn_initializers, _dependsOn_extraInitializers);
|
|
47
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
48
|
-
JoistBindElement = _classThis = _classDescriptor.value;
|
|
49
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
50
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
51
|
-
}
|
|
52
|
-
#props_accessor_storage = __runInitializers(this, _props_initializers, "");
|
|
53
|
-
get props() { return this.#props_accessor_storage; }
|
|
54
|
-
set props(value) { this.#props_accessor_storage = value; }
|
|
55
|
-
#attrs_accessor_storage = (__runInitializers(this, _props_extraInitializers), __runInitializers(this, _attrs_initializers, ""));
|
|
56
|
-
get attrs() { return this.#attrs_accessor_storage; }
|
|
57
|
-
set attrs(value) { this.#attrs_accessor_storage = value; }
|
|
58
|
-
#target_accessor_storage = (__runInitializers(this, _attrs_extraInitializers), __runInitializers(this, _target_initializers, ""));
|
|
59
|
-
get target() { return this.#target_accessor_storage; }
|
|
60
|
-
set target(value) { this.#target_accessor_storage = value; }
|
|
61
|
-
#dependsOn_accessor_storage = (__runInitializers(this, _target_extraInitializers), __runInitializers(this, _dependsOn_initializers, ""));
|
|
62
|
-
get dependsOn() { return this.#dependsOn_accessor_storage; }
|
|
63
|
-
set dependsOn(value) { this.#dependsOn_accessor_storage = value; }
|
|
64
|
-
async connectedCallback() {
|
|
65
|
-
const attrBindings = this.#parseBinding(this.attrs);
|
|
66
|
-
const propBindings = this.#parseBinding(this.props);
|
|
67
|
-
let children = this.children;
|
|
68
|
-
const root = this.getRootNode();
|
|
69
|
-
if (this.target) {
|
|
70
|
-
children = root.querySelectorAll(this.target);
|
|
71
|
-
}
|
|
72
|
-
if (this.dependsOn) {
|
|
73
|
-
await Promise.all(this.dependsOn.split(",").map((tag) => window.customElements.whenDefined(tag)));
|
|
74
|
-
}
|
|
75
|
-
for (const attrValue of attrBindings) {
|
|
76
|
-
const token = new JAttrToken(attrValue);
|
|
77
|
-
this.#dispatch(token, (value) => {
|
|
78
|
-
for (const child of children) {
|
|
79
|
-
if (value === true) {
|
|
80
|
-
child.setAttribute(token.mapTo, "");
|
|
81
|
-
}
|
|
82
|
-
else if (value === false) {
|
|
83
|
-
child.removeAttribute(token.mapTo);
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
child.setAttribute(token.mapTo, String(value));
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
for (const propValue of propBindings) {
|
|
92
|
-
const token = new JAttrToken(propValue);
|
|
93
|
-
this.#dispatch(token, (value) => {
|
|
94
|
-
for (const child of children) {
|
|
95
|
-
const mapToParts = token.mapTo.split(".");
|
|
96
|
-
if (mapToParts.length > 1) {
|
|
97
|
-
const finalPart = mapToParts.pop();
|
|
98
|
-
let pointer = child;
|
|
99
|
-
for (const part of mapToParts) {
|
|
100
|
-
pointer = pointer?.[part];
|
|
101
|
-
if (pointer === undefined) {
|
|
102
|
-
break;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
Reflect.set(pointer, finalPart, value);
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
Reflect.set(child, token.mapTo, value);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
#parseBinding(binding) {
|
|
115
|
-
return binding
|
|
116
|
-
.split(",")
|
|
117
|
-
.map((b) => b.trim())
|
|
118
|
-
.filter((b) => b);
|
|
119
|
-
}
|
|
120
|
-
#dispatch(token, write) {
|
|
121
|
-
this.dispatchEvent(new JoistValueEvent(token, ({ newValue, oldValue, alwaysUpdate }) => {
|
|
122
|
-
if (newValue === oldValue && !alwaysUpdate) {
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
let valueToWrite = token.evaluate(newValue);
|
|
126
|
-
let oldWrittenValue = token.evaluate(oldValue);
|
|
127
|
-
if (oldWrittenValue === valueToWrite) {
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
if (token.isNegated) {
|
|
131
|
-
valueToWrite = !valueToWrite;
|
|
132
|
-
}
|
|
133
|
-
write(valueToWrite);
|
|
134
|
-
}));
|
|
135
|
-
}
|
|
136
|
-
constructor() {
|
|
137
|
-
super(...arguments);
|
|
138
|
-
__runInitializers(this, _dependsOn_extraInitializers);
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
return JoistBindElement = _classThis;
|
|
142
|
-
})();
|
|
143
|
-
export { JoistBindElement };
|
|
144
|
-
//# sourceMappingURL=bind.element.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bind.element.js","sourceRoot":"","sources":["../../../src/lib/elements/bind.element.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import "../define.js";
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import "../define.js";
|
|
2
|
-
import { fixtureSync, html } from "@open-wc/testing";
|
|
3
|
-
import { assert } from "chai";
|
|
4
|
-
it("should pass props to child", () => {
|
|
5
|
-
const element = fixtureSync(html `
|
|
6
|
-
<div
|
|
7
|
-
@joist::value=${(e) => {
|
|
8
|
-
if (e.expression.bindTo === "href") {
|
|
9
|
-
e.update({
|
|
10
|
-
oldValue: null,
|
|
11
|
-
newValue: "$foo",
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
if (e.expression.bindTo === "target") {
|
|
15
|
-
e.update({
|
|
16
|
-
oldValue: null,
|
|
17
|
-
newValue: {
|
|
18
|
-
value: "_blank",
|
|
19
|
-
},
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
}}
|
|
23
|
-
>
|
|
24
|
-
<j-bind attrs="href:href" props="target:target.value">
|
|
25
|
-
<a>Hello World</a>
|
|
26
|
-
</j-bind>
|
|
27
|
-
</div>
|
|
28
|
-
`);
|
|
29
|
-
const anchor = element.querySelector("a");
|
|
30
|
-
assert.equal(anchor?.getAttribute("href"), "$foo");
|
|
31
|
-
assert.equal(anchor?.getAttribute("target"), "_blank");
|
|
32
|
-
});
|
|
33
|
-
it("should pass props to specified child", () => {
|
|
34
|
-
const element = fixtureSync(html `
|
|
35
|
-
<div
|
|
36
|
-
@joist::value=${(e) => {
|
|
37
|
-
e.update({
|
|
38
|
-
oldValue: null,
|
|
39
|
-
newValue: "#foo",
|
|
40
|
-
});
|
|
41
|
-
}}
|
|
42
|
-
>
|
|
43
|
-
<j-bind attrs="href:href" target="#test"></j-bind>
|
|
44
|
-
|
|
45
|
-
<a>Default</a>
|
|
46
|
-
<a id="test">Target</a>
|
|
47
|
-
</div>
|
|
48
|
-
`);
|
|
49
|
-
const anchor = element.querySelectorAll("a");
|
|
50
|
-
assert.equal(anchor[0].getAttribute("href"), null);
|
|
51
|
-
assert.equal(anchor[1].getAttribute("href"), "#foo");
|
|
52
|
-
});
|
|
53
|
-
it("should be case sensitive", () => {
|
|
54
|
-
const element = fixtureSync(html `
|
|
55
|
-
<div
|
|
56
|
-
@joist::value=${(e) => {
|
|
57
|
-
e.update({ oldValue: null, newValue: 8 });
|
|
58
|
-
}}
|
|
59
|
-
>
|
|
60
|
-
<j-bind
|
|
61
|
-
props="
|
|
62
|
-
selectionStart:foo,
|
|
63
|
-
selectionEnd:foo
|
|
64
|
-
"
|
|
65
|
-
>
|
|
66
|
-
<input value="1234567890" />
|
|
67
|
-
</j-bind>
|
|
68
|
-
</div>
|
|
69
|
-
`);
|
|
70
|
-
const input = element.querySelector("input");
|
|
71
|
-
assert.equal(input?.selectionStart, 8);
|
|
72
|
-
assert.equal(input?.selectionEnd, 8);
|
|
73
|
-
});
|
|
74
|
-
it("should default to the mapTo value if bindTo is not provided", () => {
|
|
75
|
-
const element = fixtureSync(html `
|
|
76
|
-
<div
|
|
77
|
-
@joist::value=${(e) => {
|
|
78
|
-
e.update({ oldValue: null, newValue: 8 });
|
|
79
|
-
}}
|
|
80
|
-
>
|
|
81
|
-
<j-bind props="selectionStart, selectionEnd">
|
|
82
|
-
<input value="1234567890" />
|
|
83
|
-
</j-bind>
|
|
84
|
-
</div>
|
|
85
|
-
`);
|
|
86
|
-
const input = element.querySelector("input");
|
|
87
|
-
assert.equal(input?.selectionStart, 8);
|
|
88
|
-
assert.equal(input?.selectionEnd, 8);
|
|
89
|
-
});
|
|
90
|
-
it("should write not update if the calculated value is the same as the old value", () => {
|
|
91
|
-
const element = fixtureSync(html `
|
|
92
|
-
<div
|
|
93
|
-
@joist::value=${(e) => {
|
|
94
|
-
e.update({ oldValue: { foo: "bar" }, newValue: { foo: "bar" } });
|
|
95
|
-
}}
|
|
96
|
-
>
|
|
97
|
-
<j-bind props="value:data.foo">
|
|
98
|
-
<input />
|
|
99
|
-
</j-bind>
|
|
100
|
-
</div>
|
|
101
|
-
`);
|
|
102
|
-
const input = element.querySelector("input");
|
|
103
|
-
assert.equal(input?.value, "");
|
|
104
|
-
});
|
|
105
|
-
it("should wait for depends-on before dispatching events", async () => {
|
|
106
|
-
let eventDispatched = false;
|
|
107
|
-
customElements.define("dependency-1", class extends HTMLElement {
|
|
108
|
-
});
|
|
109
|
-
customElements.define("dependency-2", class extends HTMLElement {
|
|
110
|
-
});
|
|
111
|
-
fixtureSync(html `
|
|
112
|
-
<div
|
|
113
|
-
@joist::value=${(e) => {
|
|
114
|
-
if (e.expression.bindTo === "href") {
|
|
115
|
-
eventDispatched = true;
|
|
116
|
-
e.update({
|
|
117
|
-
oldValue: null,
|
|
118
|
-
newValue: "$foo",
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
}}
|
|
122
|
-
>
|
|
123
|
-
<j-bind attrs="href:href" depends-on="dependency-1,dependency-2">
|
|
124
|
-
<a>Hello World</a>
|
|
125
|
-
</j-bind>
|
|
126
|
-
</div>
|
|
127
|
-
`);
|
|
128
|
-
assert.isFalse(eventDispatched);
|
|
129
|
-
await Promise.all([
|
|
130
|
-
customElements.whenDefined("dependency-1"),
|
|
131
|
-
customElements.whenDefined("dependency-2"),
|
|
132
|
-
]);
|
|
133
|
-
assert.isTrue(eventDispatched);
|
|
134
|
-
});
|
|
135
|
-
it("should bind to a nested prop like style", async () => {
|
|
136
|
-
const element = fixtureSync(html `
|
|
137
|
-
<div
|
|
138
|
-
@joist::value=${(e) => {
|
|
139
|
-
e.update({ oldValue: null, newValue: "red" });
|
|
140
|
-
}}
|
|
141
|
-
>
|
|
142
|
-
<j-bind props="style.color:color">
|
|
143
|
-
<input value="1234567890" />
|
|
144
|
-
</j-bind>
|
|
145
|
-
</div>
|
|
146
|
-
`);
|
|
147
|
-
const input = element.querySelector("input");
|
|
148
|
-
assert.equal(input?.style.color, "red");
|
|
149
|
-
});
|
|
150
|
-
//# sourceMappingURL=bind.element.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bind.element.test.js","sourceRoot":"","sources":["../../../src/lib/elements/bind.element.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export interface EachCtx<T> {
|
|
2
|
-
value: T | null;
|
|
3
|
-
index: number | null;
|
|
4
|
-
position: number | null;
|
|
5
|
-
}
|
|
6
|
-
export declare class JoistForElement extends HTMLElement {
|
|
7
|
-
#private;
|
|
8
|
-
accessor bind: string;
|
|
9
|
-
accessor key: string;
|
|
10
|
-
accessor dependsOn: string;
|
|
11
|
-
connectedCallback(): Promise<void>;
|
|
12
|
-
createFromEmpty(): void;
|
|
13
|
-
updateItems(): void;
|
|
14
|
-
disconnectedCallback(): void;
|
|
15
|
-
}
|