@joist/templating 4.2.3 → 4.2.4-next.1
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/README.md +172 -144
- package/package.json +1 -2
- package/src/lib/define.ts +1 -1
- package/src/lib/elements/{props.element.test.ts → bind.element.test.ts} +50 -7
- package/src/lib/elements/bind.element.ts +99 -0
- package/src/lib/elements/for.element.test.ts +8 -9
- package/src/lib/elements/scope.ts +1 -1
- package/src/lib/elements/value.element.test.ts +1 -1
- package/src/lib/elements/value.element.ts +2 -2
- package/target/lib/define.d.ts +1 -1
- package/target/lib/define.js +1 -1
- package/target/lib/define.js.map +1 -1
- package/target/lib/elements/{props.element.d.ts → bind.element.d.ts} +3 -2
- package/target/lib/elements/bind.element.js +115 -0
- package/target/lib/elements/bind.element.js.map +1 -0
- package/target/lib/elements/bind.element.test.d.ts +1 -0
- package/target/lib/elements/bind.element.test.js +90 -0
- package/target/lib/elements/bind.element.test.js.map +1 -0
- package/target/lib/elements/for.element.test.js +7 -8
- package/target/lib/elements/for.element.test.js.map +1 -1
- package/target/lib/elements/scope.js +1 -1
- package/target/lib/elements/scope.js.map +1 -1
- package/target/lib/elements/value.element.d.ts +1 -1
- package/target/lib/elements/value.element.js +1 -1
- package/target/lib/elements/value.element.js.map +1 -1
- package/target/lib/elements/value.element.test.js +1 -1
- package/src/lib/elements/props.element.ts +0 -76
- package/target/lib/elements/props.element.js +0 -90
- package/target/lib/elements/props.element.js.map +0 -1
- package/target/lib/elements/props.element.test.d.ts +0 -1
- package/target/lib/elements/props.element.test.js +0 -53
- package/target/lib/elements/props.element.test.js.map +0 -1
|
@@ -23,7 +23,7 @@ it("should iterate over an iterable", () => {
|
|
|
23
23
|
<j-for bind="items" key="id">
|
|
24
24
|
<template>
|
|
25
25
|
<li>
|
|
26
|
-
<j-
|
|
26
|
+
<j-val bind="each.value.label"></j-val>
|
|
27
27
|
</li>
|
|
28
28
|
</template>
|
|
29
29
|
</j-for>
|
|
@@ -94,13 +94,13 @@ it("should update when items are added or removed", () => {
|
|
|
94
94
|
>
|
|
95
95
|
<j-for bind="items" key="id">
|
|
96
96
|
<template>
|
|
97
|
-
<j-
|
|
97
|
+
<j-val bind="each.value.text"></j-val>
|
|
98
98
|
</template>
|
|
99
99
|
</j-for>
|
|
100
100
|
</div>
|
|
101
101
|
`);
|
|
102
102
|
|
|
103
|
-
const items = element.querySelectorAll("j-
|
|
103
|
+
const items = element.querySelectorAll("j-val");
|
|
104
104
|
assert.equal(items.length, 2);
|
|
105
105
|
assert.equal(items[0].textContent?.trim(), "First");
|
|
106
106
|
assert.equal(items[1].textContent?.trim(), "Third");
|
|
@@ -118,9 +118,8 @@ it("should provide index and position information", () => {
|
|
|
118
118
|
>
|
|
119
119
|
<j-for bind="items">
|
|
120
120
|
<template>
|
|
121
|
-
<j-
|
|
122
|
-
(index: <j-
|
|
123
|
-
position: <j-value bind="each.position"></j-value>)
|
|
121
|
+
<j-val bind="each.value"></j-val>
|
|
122
|
+
(index: <j-val bind="each.index"></j-val>, position: <j-val bind="each.position"></j-val>)
|
|
124
123
|
</template>
|
|
125
124
|
</j-for>
|
|
126
125
|
</div>
|
|
@@ -160,7 +159,7 @@ it("should provide index and position information", () => {
|
|
|
160
159
|
// <div class="group">
|
|
161
160
|
// <j-for bind="each.value.items">
|
|
162
161
|
// <template>
|
|
163
|
-
// <j-
|
|
162
|
+
// <j-val class="child" bind="each.value"></j-val>
|
|
164
163
|
// </template>
|
|
165
164
|
// </j-for>
|
|
166
165
|
// </div>
|
|
@@ -207,13 +206,13 @@ it("should maintain DOM order when items are reordered", () => {
|
|
|
207
206
|
>
|
|
208
207
|
<j-for bind="items" key="id">
|
|
209
208
|
<template>
|
|
210
|
-
<j-
|
|
209
|
+
<j-val bind="each.value.text"></j-val>
|
|
211
210
|
</template>
|
|
212
211
|
</j-for>
|
|
213
212
|
</div>
|
|
214
213
|
`);
|
|
215
214
|
|
|
216
|
-
const items = element.querySelectorAll("j-
|
|
215
|
+
const items = element.querySelectorAll("j-val");
|
|
217
216
|
assert.equal(items.length, 3);
|
|
218
217
|
assert.equal(items[0].textContent?.trim(), "Third");
|
|
219
218
|
assert.equal(items[1].textContent?.trim(), "First");
|
|
@@ -4,12 +4,12 @@ import { JToken } from "../token.js";
|
|
|
4
4
|
|
|
5
5
|
declare global {
|
|
6
6
|
interface HTMLElementTagNameMap {
|
|
7
|
-
"j-
|
|
7
|
+
"j-val": JoistValueElement;
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
@element({
|
|
12
|
-
tagName: "j-
|
|
12
|
+
tagName: "j-val",
|
|
13
13
|
// prettier-ignore
|
|
14
14
|
shadowDom: [css`:host{display: contents;}`, html`<slot></slot>`],
|
|
15
15
|
})
|
package/target/lib/define.d.ts
CHANGED
package/target/lib/define.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./elements/async.element.js";
|
|
2
2
|
import "./elements/for.element.js";
|
|
3
3
|
import "./elements/if.element.js";
|
|
4
|
-
import "./elements/
|
|
4
|
+
import "./elements/bind.element.js";
|
|
5
5
|
import "./elements/value.element.js";
|
|
6
6
|
//# sourceMappingURL=define.js.map
|
package/target/lib/define.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../src/lib/define.ts"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAC;AACrC,OAAO,2BAA2B,CAAC;AACnC,OAAO,0BAA0B,CAAC;AAClC,OAAO,
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../src/lib/define.ts"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAC;AACrC,OAAO,2BAA2B,CAAC;AACnC,OAAO,0BAA0B,CAAC;AAClC,OAAO,4BAA4B,CAAC;AACpC,OAAO,6BAA6B,CAAC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { JToken } from "../token.js";
|
|
2
2
|
export declare class JAttrToken extends JToken {
|
|
3
3
|
mapTo: string;
|
|
4
|
-
|
|
5
|
-
constructor(attr: Attr);
|
|
4
|
+
constructor(binding: string);
|
|
6
5
|
}
|
|
7
6
|
export declare class JoistIfElement extends HTMLElement {
|
|
8
7
|
#private;
|
|
8
|
+
accessor props: string;
|
|
9
|
+
accessor attrs: string;
|
|
9
10
|
accessor target: string;
|
|
10
11
|
connectedCallback(): void;
|
|
11
12
|
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
+
import { attr, element, css, html } from "@joist/element";
|
|
3
|
+
import { JToken } from "../token.js";
|
|
4
|
+
import { JoistValueEvent } from "../events.js";
|
|
5
|
+
export class JAttrToken extends JToken {
|
|
6
|
+
mapTo;
|
|
7
|
+
constructor(binding) {
|
|
8
|
+
const [mapTo, bindTo] = binding.split(":");
|
|
9
|
+
super(bindTo ?? mapTo);
|
|
10
|
+
this.mapTo = mapTo;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
let JoistIfElement = (() => {
|
|
14
|
+
let _classDecorators = [element({
|
|
15
|
+
tagName: "j-bind",
|
|
16
|
+
shadowDom: [css `:host{display: contents;}`, html `<slot></slot>`],
|
|
17
|
+
})];
|
|
18
|
+
let _classDescriptor;
|
|
19
|
+
let _classExtraInitializers = [];
|
|
20
|
+
let _classThis;
|
|
21
|
+
let _classSuper = HTMLElement;
|
|
22
|
+
let _props_decorators;
|
|
23
|
+
let _props_initializers = [];
|
|
24
|
+
let _props_extraInitializers = [];
|
|
25
|
+
let _attrs_decorators;
|
|
26
|
+
let _attrs_initializers = [];
|
|
27
|
+
let _attrs_extraInitializers = [];
|
|
28
|
+
let _target_decorators;
|
|
29
|
+
let _target_initializers = [];
|
|
30
|
+
let _target_extraInitializers = [];
|
|
31
|
+
var JoistIfElement = class extends _classSuper {
|
|
32
|
+
static { _classThis = this; }
|
|
33
|
+
static {
|
|
34
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
35
|
+
_props_decorators = [attr()];
|
|
36
|
+
_attrs_decorators = [attr()];
|
|
37
|
+
_target_decorators = [attr()];
|
|
38
|
+
__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);
|
|
39
|
+
__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);
|
|
40
|
+
__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);
|
|
41
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
42
|
+
JoistIfElement = _classThis = _classDescriptor.value;
|
|
43
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
44
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
45
|
+
}
|
|
46
|
+
#props_accessor_storage = __runInitializers(this, _props_initializers, "");
|
|
47
|
+
get props() { return this.#props_accessor_storage; }
|
|
48
|
+
set props(value) { this.#props_accessor_storage = value; }
|
|
49
|
+
#attrs_accessor_storage = (__runInitializers(this, _props_extraInitializers), __runInitializers(this, _attrs_initializers, ""));
|
|
50
|
+
get attrs() { return this.#attrs_accessor_storage; }
|
|
51
|
+
set attrs(value) { this.#attrs_accessor_storage = value; }
|
|
52
|
+
#target_accessor_storage = (__runInitializers(this, _attrs_extraInitializers), __runInitializers(this, _target_initializers, ""));
|
|
53
|
+
get target() { return this.#target_accessor_storage; }
|
|
54
|
+
set target(value) { this.#target_accessor_storage = value; }
|
|
55
|
+
connectedCallback() {
|
|
56
|
+
const attrBindings = this.#parseBinding(this.attrs);
|
|
57
|
+
const propBindings = this.#parseBinding(this.props);
|
|
58
|
+
let child = this.firstElementChild;
|
|
59
|
+
if (this.target) {
|
|
60
|
+
child = this.querySelector(this.target);
|
|
61
|
+
}
|
|
62
|
+
if (!child) {
|
|
63
|
+
throw new Error("j-bind must have a child element or defined target");
|
|
64
|
+
}
|
|
65
|
+
for (const attrValue of attrBindings) {
|
|
66
|
+
const token = new JAttrToken(attrValue);
|
|
67
|
+
this.#dispatch(token, (value) => {
|
|
68
|
+
if (value === true) {
|
|
69
|
+
child.setAttribute(token.mapTo, "");
|
|
70
|
+
}
|
|
71
|
+
else if (value === false) {
|
|
72
|
+
child.removeAttribute(token.mapTo);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
child.setAttribute(token.mapTo, String(value));
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
for (const propValue of propBindings) {
|
|
80
|
+
const token = new JAttrToken(propValue);
|
|
81
|
+
this.#dispatch(token, (value) => {
|
|
82
|
+
Reflect.set(child, token.mapTo, value);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
#parseBinding(binding) {
|
|
87
|
+
return binding
|
|
88
|
+
.split(",")
|
|
89
|
+
.map((b) => b.trim())
|
|
90
|
+
.filter((b) => b);
|
|
91
|
+
}
|
|
92
|
+
#dispatch(token, write) {
|
|
93
|
+
this.dispatchEvent(new JoistValueEvent(token, ({ newValue, oldValue }) => {
|
|
94
|
+
if (newValue === oldValue) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
let valueToWrite = newValue;
|
|
98
|
+
if (typeof newValue === "object" && newValue !== null) {
|
|
99
|
+
valueToWrite = token.readTokenValueFrom(newValue);
|
|
100
|
+
}
|
|
101
|
+
if (token.isNegated) {
|
|
102
|
+
valueToWrite = !valueToWrite;
|
|
103
|
+
}
|
|
104
|
+
write(valueToWrite);
|
|
105
|
+
}));
|
|
106
|
+
}
|
|
107
|
+
constructor() {
|
|
108
|
+
super(...arguments);
|
|
109
|
+
__runInitializers(this, _target_extraInitializers);
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
return JoistIfElement = _classThis;
|
|
113
|
+
})();
|
|
114
|
+
export { JoistIfElement };
|
|
115
|
+
//# sourceMappingURL=bind.element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bind.element.js","sourceRoot":"","sources":["../../../src/lib/elements/bind.element.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./bind.element.js";
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import "./bind.element.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.token.bindTo === "href") {
|
|
9
|
+
e.update({
|
|
10
|
+
oldValue: null,
|
|
11
|
+
newValue: "$foo",
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
if (e.token.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">
|
|
44
|
+
<a>Default</a>
|
|
45
|
+
<a id="test">Target</a>
|
|
46
|
+
</j-bind>
|
|
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
|
+
//# sourceMappingURL=bind.element.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bind.element.test.js","sourceRoot":"","sources":["../../../src/lib/elements/bind.element.test.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAI9B,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACpC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAA;;sBAEZ,CAAC,CAAkB,EAAE,EAAE;QACrC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,CAAC,CAAC,MAAM,CAAC;gBACP,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAChC,CAAC,CAAC,MAAM,CAAC;gBACP,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE;oBACR,KAAK,EAAE,QAAQ;iBAChB;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;;;;;;GAMJ,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAE1C,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;IAC9C,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAA;;sBAEZ,CAAC,CAAkB,EAAE,EAAE;QACrC,CAAC,CAAC,MAAM,CAAC;YACP,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC;IACL,CAAC;;;;;;;GAOJ,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAE7C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;IAClC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAA;;sBAEZ,CAAC,CAAkB,EAAE,EAAE;QACrC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;;;;;;;;;;;GAWJ,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAE7C,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;IACrE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAA;;sBAEZ,CAAC,CAAkB,EAAE,EAAE;QACrC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;;;;;;GAMJ,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAE7C,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC"}
|
|
@@ -19,7 +19,7 @@ it("should iterate over an iterable", () => {
|
|
|
19
19
|
<j-for bind="items" key="id">
|
|
20
20
|
<template>
|
|
21
21
|
<li>
|
|
22
|
-
<j-
|
|
22
|
+
<j-val bind="each.value.label"></j-val>
|
|
23
23
|
</li>
|
|
24
24
|
</template>
|
|
25
25
|
</j-for>
|
|
@@ -80,12 +80,12 @@ it("should update when items are added or removed", () => {
|
|
|
80
80
|
>
|
|
81
81
|
<j-for bind="items" key="id">
|
|
82
82
|
<template>
|
|
83
|
-
<j-
|
|
83
|
+
<j-val bind="each.value.text"></j-val>
|
|
84
84
|
</template>
|
|
85
85
|
</j-for>
|
|
86
86
|
</div>
|
|
87
87
|
`);
|
|
88
|
-
const items = element.querySelectorAll("j-
|
|
88
|
+
const items = element.querySelectorAll("j-val");
|
|
89
89
|
assert.equal(items.length, 2);
|
|
90
90
|
assert.equal(items[0].textContent?.trim(), "First");
|
|
91
91
|
assert.equal(items[1].textContent?.trim(), "Third");
|
|
@@ -102,9 +102,8 @@ it("should provide index and position information", () => {
|
|
|
102
102
|
>
|
|
103
103
|
<j-for bind="items">
|
|
104
104
|
<template>
|
|
105
|
-
<j-
|
|
106
|
-
(index: <j-
|
|
107
|
-
position: <j-value bind="each.position"></j-value>)
|
|
105
|
+
<j-val bind="each.value"></j-val>
|
|
106
|
+
(index: <j-val bind="each.index"></j-val>, position: <j-val bind="each.position"></j-val>)
|
|
108
107
|
</template>
|
|
109
108
|
</j-for>
|
|
110
109
|
</div>
|
|
@@ -139,12 +138,12 @@ it("should maintain DOM order when items are reordered", () => {
|
|
|
139
138
|
>
|
|
140
139
|
<j-for bind="items" key="id">
|
|
141
140
|
<template>
|
|
142
|
-
<j-
|
|
141
|
+
<j-val bind="each.value.text"></j-val>
|
|
143
142
|
</template>
|
|
144
143
|
</j-for>
|
|
145
144
|
</div>
|
|
146
145
|
`);
|
|
147
|
-
const items = element.querySelectorAll("j-
|
|
146
|
+
const items = element.querySelectorAll("j-val");
|
|
148
147
|
assert.equal(items.length, 3);
|
|
149
148
|
assert.equal(items[0].textContent?.trim(), "Third");
|
|
150
149
|
assert.equal(items[1].textContent?.trim(), "First");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"for.element.test.js","sourceRoot":"","sources":["../../../src/lib/elements/for.element.test.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,oBAAoB,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAI9B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;IACzC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAA;;sBAEZ,CAAC,CAAkB,EAAE,EAAE;QACrC,CAAC,CAAC,MAAM,CAAC;YACP,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI,GAAG,CAAC;gBAChB,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;gBAC7B,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;aAC9B,CAAC;SACH,CAAC,CAAC;IACL,CAAC;;;;;;;;;;;;GAYJ,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAEjD,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACpC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAA;;sBAEZ,CAAC,CAAkB,EAAE,EAAE;QACrC,CAAC,CAAC,MAAM,CAAC;YACP,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC;IACL,CAAC;;;;;;;;GAQJ,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;IACvD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAA;;sBAEZ,CAAC,CAAkB,EAAE,EAAE;QAErC,CAAC,CAAC,MAAM,CAAC;YACP,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE;gBACR,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;gBAC1B,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC5B;SACF,CAAC,CAAC;QAGH,CAAC,CAAC,MAAM,CAAC;YACP,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE;gBACR,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;gBAC1B,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC3B,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;aAC3B;SACF,CAAC,CAAC;QAGH,CAAC,CAAC,MAAM,CAAC;YACP,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE;gBACR,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;gBAC1B,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;aAC3B;SACF,CAAC,CAAC;IACL,CAAC;;;;;;;;GAQJ,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"for.element.test.js","sourceRoot":"","sources":["../../../src/lib/elements/for.element.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { __esDecorate, __runInitializers } from "tslib";
|
|
|
2
2
|
import { attr, element, css, html, listen } from "@joist/element";
|
|
3
3
|
let JoistScopeElement = (() => {
|
|
4
4
|
let _classDecorators = [element({
|
|
5
|
-
tagName: "j-
|
|
5
|
+
tagName: "j-val",
|
|
6
6
|
shadowDom: [css `:host{display: contents;}`, html `<slot></slot>`],
|
|
7
7
|
})];
|
|
8
8
|
let _classDescriptor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../../src/lib/elements/scope.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;IAerD,iBAAiB;4BAL7B,OAAO,CAAC;YACP,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../../src/lib/elements/scope.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;IAerD,iBAAiB;4BAL7B,OAAO,CAAC;YACP,OAAO,EAAE,OAAO;YAEhB,SAAS,EAAE,CAAC,GAAG,CAAA,2BAA2B,EAAE,IAAI,CAAA,eAAe,CAAC;SACjE,CAAC;;;;sBACqC,WAAW;;;;;;;;;iCAAnB,SAAQ,WAAW;;;;gCAC/C,IAAI,EAAE;iCAGN,IAAI,EAAE;6CAKN,MAAM,CAAC,cAAc,CAAC;YAPvB,iKAAS,IAAI,6BAAJ,IAAI,mFAAM;YAGnB,oKAAS,KAAK,6BAAL,KAAK,qFAAM;YAKpB,sMAAA,iBAAiB,6DAQhB;YAlBH,6KAuBC;;;YAvBY,uDAAiB;;QAE5B,0BAFW,mDAAiB,8CAEZ,EAAE,GAAC;QAAnB,IAAS,IAAI,0CAAM;QAAnB,IAAS,IAAI,gDAAM;QAGnB,0HAAiB,EAAE,GAAC;QAApB,IAAS,KAAK,2CAAM;QAApB,IAAS,KAAK,iDAAM;QAEpB,QAAQ,uDAA2B,IAAI,EAAC;QAGxC,iBAAiB,CAAC,CAAkB;YAClC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBACjC,CAAC,CAAC,eAAe,EAAE,CAAC;gBAEpB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAElB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,wBAAwB,CAAC,CAAS,EAAE,QAAgB,EAAE,QAAgB;YACpE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChD,CAAC;;;;SAtBU,iBAAiB"}
|
|
@@ -4,7 +4,7 @@ import { JoistValueEvent } from "../events.js";
|
|
|
4
4
|
import { JToken } from "../token.js";
|
|
5
5
|
let JoistValueElement = (() => {
|
|
6
6
|
let _classDecorators = [element({
|
|
7
|
-
tagName: "j-
|
|
7
|
+
tagName: "j-val",
|
|
8
8
|
shadowDom: [css `:host{display: contents;}`, html `<slot></slot>`],
|
|
9
9
|
})];
|
|
10
10
|
let _classDescriptor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value.element.js","sourceRoot":"","sources":["../../../src/lib/elements/value.element.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;IAaxB,iBAAiB;4BAL7B,OAAO,CAAC;YACP,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"value.element.js","sourceRoot":"","sources":["../../../src/lib/elements/value.element.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;IAaxB,iBAAiB;4BAL7B,OAAO,CAAC;YACP,OAAO,EAAE,OAAO;YAEhB,SAAS,EAAE,CAAC,GAAG,CAAA,2BAA2B,EAAE,IAAI,CAAA,eAAe,CAAC;SACjE,CAAC;;;;sBACqC,WAAW;;;;iCAAnB,SAAQ,WAAW;;;;gCAC/C,IAAI,EAAE;YACP,iKAAS,IAAI,6BAAJ,IAAI,mFAAM;YAFrB,6KAuBC;;;YAvBY,uDAAiB;;QAE5B,qEAAgB,EAAE,EAAC;QAAnB,IAAS,IAAI,0CAAM;QAAnB,IAAS,IAAI,gDAAM;QAEnB,iBAAiB;YACf,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEpC,IAAI,CAAC,aAAa,CAChB,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnC,IAAI,YAAoB,CAAC;gBAEzB,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;oBAClE,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAClE,CAAC;qBAAM,CAAC;oBACN,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACxC,CAAC;gBAED,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,EAAE,CAAC;oBACtC,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;gBAClC,CAAC;YACH,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;;;;;;;;SAtBU,iBAAiB"}
|
|
@@ -8,7 +8,7 @@ it("should render content when the bind value is truthy", () => {
|
|
|
8
8
|
e.update({ oldValue: null, newValue: "Hello World" });
|
|
9
9
|
}}
|
|
10
10
|
>
|
|
11
|
-
<j-
|
|
11
|
+
<j-val bind="test"></j-val>
|
|
12
12
|
</div>
|
|
13
13
|
`);
|
|
14
14
|
assert.equal(element.textContent?.trim(), "Hello World");
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { attr, element, css, html } from "@joist/element";
|
|
2
|
-
|
|
3
|
-
import { JoistValueEvent } from "../events.js";
|
|
4
|
-
import { JToken } from "../token.js";
|
|
5
|
-
|
|
6
|
-
export class JAttrToken extends JToken {
|
|
7
|
-
mapTo: string;
|
|
8
|
-
mapsToProp: boolean;
|
|
9
|
-
|
|
10
|
-
constructor(attr: Attr) {
|
|
11
|
-
if (!attr.name.startsWith("$")) {
|
|
12
|
-
throw new Error(`Invalid attribute token: ${attr.name}, should start with $`);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
super(attr.value);
|
|
16
|
-
|
|
17
|
-
this.mapsToProp = attr.name.startsWith("$.");
|
|
18
|
-
|
|
19
|
-
this.mapTo = attr.name.slice(this.mapsToProp ? 2 : 1);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
@element({
|
|
24
|
-
tagName: "j-props",
|
|
25
|
-
// prettier-ignore
|
|
26
|
-
shadowDom: [css`:host{display: contents;}`, html`<slot></slot>`],
|
|
27
|
-
})
|
|
28
|
-
export class JoistIfElement extends HTMLElement {
|
|
29
|
-
@attr()
|
|
30
|
-
accessor target = "";
|
|
31
|
-
|
|
32
|
-
connectedCallback(): void {
|
|
33
|
-
this.#bindProps([this]); // bind own props
|
|
34
|
-
this.#bindProps(this.children); // bind child props
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
#bindProps(children: Iterable<Element>) {
|
|
38
|
-
for (const child of children) {
|
|
39
|
-
for (const attr of child.attributes) {
|
|
40
|
-
if (attr.name.startsWith("$")) {
|
|
41
|
-
const token = new JAttrToken(attr);
|
|
42
|
-
|
|
43
|
-
this.dispatchEvent(
|
|
44
|
-
new JoistValueEvent(token, ({ newValue, oldValue }) => {
|
|
45
|
-
if (newValue === oldValue) {
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
let valueToWrite = newValue;
|
|
50
|
-
|
|
51
|
-
if (typeof newValue === "object" && newValue !== null) {
|
|
52
|
-
valueToWrite = token.readTokenValueFrom(newValue);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (token.isNegated) {
|
|
56
|
-
valueToWrite = !valueToWrite;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
if (token.mapsToProp) {
|
|
60
|
-
Reflect.set(child, token.mapTo, valueToWrite);
|
|
61
|
-
} else {
|
|
62
|
-
if (valueToWrite === true) {
|
|
63
|
-
child.setAttribute(token.mapTo, "");
|
|
64
|
-
} else if (valueToWrite === false) {
|
|
65
|
-
child.removeAttribute(token.mapTo);
|
|
66
|
-
} else {
|
|
67
|
-
child.setAttribute(token.mapTo, String(valueToWrite));
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}),
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|