@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.
Files changed (32) hide show
  1. package/README.md +172 -144
  2. package/package.json +1 -2
  3. package/src/lib/define.ts +1 -1
  4. package/src/lib/elements/{props.element.test.ts → bind.element.test.ts} +50 -7
  5. package/src/lib/elements/bind.element.ts +99 -0
  6. package/src/lib/elements/for.element.test.ts +8 -9
  7. package/src/lib/elements/scope.ts +1 -1
  8. package/src/lib/elements/value.element.test.ts +1 -1
  9. package/src/lib/elements/value.element.ts +2 -2
  10. package/target/lib/define.d.ts +1 -1
  11. package/target/lib/define.js +1 -1
  12. package/target/lib/define.js.map +1 -1
  13. package/target/lib/elements/{props.element.d.ts → bind.element.d.ts} +3 -2
  14. package/target/lib/elements/bind.element.js +115 -0
  15. package/target/lib/elements/bind.element.js.map +1 -0
  16. package/target/lib/elements/bind.element.test.d.ts +1 -0
  17. package/target/lib/elements/bind.element.test.js +90 -0
  18. package/target/lib/elements/bind.element.test.js.map +1 -0
  19. package/target/lib/elements/for.element.test.js +7 -8
  20. package/target/lib/elements/for.element.test.js.map +1 -1
  21. package/target/lib/elements/scope.js +1 -1
  22. package/target/lib/elements/scope.js.map +1 -1
  23. package/target/lib/elements/value.element.d.ts +1 -1
  24. package/target/lib/elements/value.element.js +1 -1
  25. package/target/lib/elements/value.element.js.map +1 -1
  26. package/target/lib/elements/value.element.test.js +1 -1
  27. package/src/lib/elements/props.element.ts +0 -76
  28. package/target/lib/elements/props.element.js +0 -90
  29. package/target/lib/elements/props.element.js.map +0 -1
  30. package/target/lib/elements/props.element.test.d.ts +0 -1
  31. package/target/lib/elements/props.element.test.js +0 -53
  32. package/target/lib/elements/props.element.test.js.map +0 -1
@@ -1,90 +0,0 @@
1
- import { __esDecorate, __runInitializers } from "tslib";
2
- import { attr, element, css, html } from "@joist/element";
3
- import { JoistValueEvent } from "../events.js";
4
- import { JToken } from "../token.js";
5
- export class JAttrToken extends JToken {
6
- mapTo;
7
- mapsToProp;
8
- constructor(attr) {
9
- if (!attr.name.startsWith("$")) {
10
- throw new Error(`Invalid attribute token: ${attr.name}, should start with $`);
11
- }
12
- super(attr.value);
13
- this.mapsToProp = attr.name.startsWith("$.");
14
- this.mapTo = attr.name.slice(this.mapsToProp ? 2 : 1);
15
- }
16
- }
17
- let JoistIfElement = (() => {
18
- let _classDecorators = [element({
19
- tagName: "j-props",
20
- shadowDom: [css `:host{display: contents;}`, html `<slot></slot>`],
21
- })];
22
- let _classDescriptor;
23
- let _classExtraInitializers = [];
24
- let _classThis;
25
- let _classSuper = HTMLElement;
26
- let _target_decorators;
27
- let _target_initializers = [];
28
- let _target_extraInitializers = [];
29
- var JoistIfElement = class extends _classSuper {
30
- static { _classThis = this; }
31
- static {
32
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
33
- _target_decorators = [attr()];
34
- __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);
35
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
36
- JoistIfElement = _classThis = _classDescriptor.value;
37
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
38
- __runInitializers(_classThis, _classExtraInitializers);
39
- }
40
- #target_accessor_storage = __runInitializers(this, _target_initializers, "");
41
- get target() { return this.#target_accessor_storage; }
42
- set target(value) { this.#target_accessor_storage = value; }
43
- connectedCallback() {
44
- this.#bindProps([this]);
45
- this.#bindProps(this.children);
46
- }
47
- #bindProps(children) {
48
- for (const child of children) {
49
- for (const attr of child.attributes) {
50
- if (attr.name.startsWith("$")) {
51
- const token = new JAttrToken(attr);
52
- this.dispatchEvent(new JoistValueEvent(token, ({ newValue, oldValue }) => {
53
- if (newValue === oldValue) {
54
- return;
55
- }
56
- let valueToWrite = newValue;
57
- if (typeof newValue === "object" && newValue !== null) {
58
- valueToWrite = token.readTokenValueFrom(newValue);
59
- }
60
- if (token.isNegated) {
61
- valueToWrite = !valueToWrite;
62
- }
63
- if (token.mapsToProp) {
64
- Reflect.set(child, token.mapTo, valueToWrite);
65
- }
66
- else {
67
- if (valueToWrite === true) {
68
- child.setAttribute(token.mapTo, "");
69
- }
70
- else if (valueToWrite === false) {
71
- child.removeAttribute(token.mapTo);
72
- }
73
- else {
74
- child.setAttribute(token.mapTo, String(valueToWrite));
75
- }
76
- }
77
- }));
78
- }
79
- }
80
- }
81
- }
82
- constructor() {
83
- super(...arguments);
84
- __runInitializers(this, _target_extraInitializers);
85
- }
86
- };
87
- return JoistIfElement = _classThis;
88
- })();
89
- export { JoistIfElement };
90
- //# sourceMappingURL=props.element.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"props.element.js","sourceRoot":"","sources":["../../../src/lib/elements/props.element.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- import "./props.element.js";
@@ -1,53 +0,0 @@
1
- import "./props.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-props>
25
- <a $href="href" $target="target.value">Hello World</a>
26
- </j-props>
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-props>
44
- <a>Default</a>
45
- <a id="test" $href="href">Target</a>
46
- </j-props>
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
- //# sourceMappingURL=props.element.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"props.element.test.js","sourceRoot":"","sources":["../../../src/lib/elements/props.element.test.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAC;AAE5B,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"}