@joist/element 4.2.3-next.5 → 4.2.3-next.7

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 (76) hide show
  1. package/package.json +2 -5
  2. package/src/lib/element.ts +13 -23
  3. package/src/lib/listen.test.ts +75 -0
  4. package/target/lib/element.js +12 -14
  5. package/target/lib/element.js.map +1 -1
  6. package/target/lib/listen.test.js +97 -0
  7. package/target/lib/listen.test.js.map +1 -1
  8. package/src/lib/templating/README.md +0 -406
  9. package/src/lib/templating/bind.ts +0 -40
  10. package/src/lib/templating/define.ts +0 -5
  11. package/src/lib/templating/elements/async.element.test.ts +0 -90
  12. package/src/lib/templating/elements/async.element.ts +0 -122
  13. package/src/lib/templating/elements/for.element.test.ts +0 -221
  14. package/src/lib/templating/elements/for.element.ts +0 -188
  15. package/src/lib/templating/elements/if.element.test.ts +0 -90
  16. package/src/lib/templating/elements/if.element.ts +0 -93
  17. package/src/lib/templating/elements/props.element.test.ts +0 -62
  18. package/src/lib/templating/elements/props.element.ts +0 -80
  19. package/src/lib/templating/elements/scope.ts +0 -45
  20. package/src/lib/templating/elements/value.element.test.ts +0 -20
  21. package/src/lib/templating/elements/value.element.ts +0 -41
  22. package/src/lib/templating/events.ts +0 -21
  23. package/src/lib/templating/token.test.ts +0 -74
  24. package/src/lib/templating/token.ts +0 -34
  25. package/src/lib/templating.ts +0 -2
  26. package/target/lib/templating/bind.d.ts +0 -1
  27. package/target/lib/templating/bind.js +0 -30
  28. package/target/lib/templating/bind.js.map +0 -1
  29. package/target/lib/templating/define.d.ts +0 -5
  30. package/target/lib/templating/define.js +0 -6
  31. package/target/lib/templating/define.js.map +0 -1
  32. package/target/lib/templating/elements/async.element.d.ts +0 -17
  33. package/target/lib/templating/elements/async.element.js +0 -115
  34. package/target/lib/templating/elements/async.element.js.map +0 -1
  35. package/target/lib/templating/elements/async.element.test.d.ts +0 -1
  36. package/target/lib/templating/elements/async.element.test.js +0 -75
  37. package/target/lib/templating/elements/async.element.test.js.map +0 -1
  38. package/target/lib/templating/elements/for.element.d.ts +0 -24
  39. package/target/lib/templating/elements/for.element.js +0 -189
  40. package/target/lib/templating/elements/for.element.js.map +0 -1
  41. package/target/lib/templating/elements/for.element.test.d.ts +0 -2
  42. package/target/lib/templating/elements/for.element.test.js +0 -153
  43. package/target/lib/templating/elements/for.element.test.js.map +0 -1
  44. package/target/lib/templating/elements/if.element.d.ts +0 -12
  45. package/target/lib/templating/elements/if.element.js +0 -85
  46. package/target/lib/templating/elements/if.element.js.map +0 -1
  47. package/target/lib/templating/elements/if.element.test.d.ts +0 -1
  48. package/target/lib/templating/elements/if.element.test.js +0 -78
  49. package/target/lib/templating/elements/if.element.test.js.map +0 -1
  50. package/target/lib/templating/elements/props.element.d.ts +0 -11
  51. package/target/lib/templating/elements/props.element.js +0 -92
  52. package/target/lib/templating/elements/props.element.js.map +0 -1
  53. package/target/lib/templating/elements/props.element.test.d.ts +0 -1
  54. package/target/lib/templating/elements/props.element.test.js +0 -53
  55. package/target/lib/templating/elements/props.element.test.js.map +0 -1
  56. package/target/lib/templating/elements/scope.d.ts +0 -13
  57. package/target/lib/templating/elements/scope.js +0 -59
  58. package/target/lib/templating/elements/scope.js.map +0 -1
  59. package/target/lib/templating/elements/value.element.d.ts +0 -9
  60. package/target/lib/templating/elements/value.element.js +0 -56
  61. package/target/lib/templating/elements/value.element.js.map +0 -1
  62. package/target/lib/templating/elements/value.element.test.d.ts +0 -1
  63. package/target/lib/templating/elements/value.element.test.js +0 -16
  64. package/target/lib/templating/elements/value.element.test.js.map +0 -1
  65. package/target/lib/templating/events.d.ts +0 -12
  66. package/target/lib/templating/events.js +0 -10
  67. package/target/lib/templating/events.js.map +0 -1
  68. package/target/lib/templating/token.d.ts +0 -8
  69. package/target/lib/templating/token.js +0 -27
  70. package/target/lib/templating/token.js.map +0 -1
  71. package/target/lib/templating/token.test.d.ts +0 -1
  72. package/target/lib/templating/token.test.js +0 -56
  73. package/target/lib/templating/token.test.js.map +0 -1
  74. package/target/lib/templating.d.ts +0 -2
  75. package/target/lib/templating.js +0 -3
  76. package/target/lib/templating.js.map +0 -1
@@ -1,189 +0,0 @@
1
- import { __esDecorate, __runInitializers } from "tslib";
2
- import { attr } from "../../attr.js";
3
- import { element } from "../../element.js";
4
- import { query } from "../../query.js";
5
- import { css, html } from "../../tags.js";
6
- import { bind } from "../bind.js";
7
- import { JoistValueEvent } from "../events.js";
8
- import { JToken } from "../token.js";
9
- let JForScope = (() => {
10
- let _classDecorators = [element({
11
- tagName: "j-for-scope",
12
- shadowDom: [css `:host{display: contents;}`, html `<slot></slot>`],
13
- })];
14
- let _classDescriptor;
15
- let _classExtraInitializers = [];
16
- let _classThis;
17
- let _classSuper = HTMLElement;
18
- let _each_decorators;
19
- let _each_initializers = [];
20
- let _each_extraInitializers = [];
21
- let _key_decorators;
22
- let _key_initializers = [];
23
- let _key_extraInitializers = [];
24
- var JForScope = class extends _classSuper {
25
- static { _classThis = this; }
26
- static {
27
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
28
- _each_decorators = [bind()];
29
- _key_decorators = [attr()];
30
- __esDecorate(this, null, _each_decorators, { kind: "accessor", name: "each", static: false, private: false, access: { has: obj => "each" in obj, get: obj => obj.each, set: (obj, value) => { obj.each = value; } }, metadata: _metadata }, _each_initializers, _each_extraInitializers);
31
- __esDecorate(this, null, _key_decorators, { kind: "accessor", name: "key", static: false, private: false, access: { has: obj => "key" in obj, get: obj => obj.key, set: (obj, value) => { obj.key = value; } }, metadata: _metadata }, _key_initializers, _key_extraInitializers);
32
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
33
- JForScope = _classThis = _classDescriptor.value;
34
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
35
- __runInitializers(_classThis, _classExtraInitializers);
36
- }
37
- #each_accessor_storage = __runInitializers(this, _each_initializers, {
38
- value: null,
39
- index: null,
40
- position: null,
41
- });
42
- get each() { return this.#each_accessor_storage; }
43
- set each(value) { this.#each_accessor_storage = value; }
44
- #key_accessor_storage = (__runInitializers(this, _each_extraInitializers), __runInitializers(this, _key_initializers, ""));
45
- get key() { return this.#key_accessor_storage; }
46
- set key(value) { this.#key_accessor_storage = value; }
47
- constructor() {
48
- super(...arguments);
49
- __runInitializers(this, _key_extraInitializers);
50
- }
51
- };
52
- return JForScope = _classThis;
53
- })();
54
- export { JForScope };
55
- let JositForElement = (() => {
56
- let _classDecorators = [element({
57
- tagName: "j-for",
58
- shadowDom: [css `:host{display:contents;}`, html `<slot></slot>`],
59
- })];
60
- let _classDescriptor;
61
- let _classExtraInitializers = [];
62
- let _classThis;
63
- let _classSuper = HTMLElement;
64
- let _bind_decorators;
65
- let _bind_initializers = [];
66
- let _bind_extraInitializers = [];
67
- let _key_decorators;
68
- let _key_initializers = [];
69
- let _key_extraInitializers = [];
70
- var JositForElement = class extends _classSuper {
71
- static { _classThis = this; }
72
- static {
73
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
74
- _bind_decorators = [attr()];
75
- _key_decorators = [attr()];
76
- __esDecorate(this, null, _bind_decorators, { kind: "accessor", name: "bind", static: false, private: false, access: { has: obj => "bind" in obj, get: obj => obj.bind, set: (obj, value) => { obj.bind = value; } }, metadata: _metadata }, _bind_initializers, _bind_extraInitializers);
77
- __esDecorate(this, null, _key_decorators, { kind: "accessor", name: "key", static: false, private: false, access: { has: obj => "key" in obj, get: obj => obj.key, set: (obj, value) => { obj.key = value; } }, metadata: _metadata }, _key_initializers, _key_extraInitializers);
78
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
79
- JositForElement = _classThis = _classDescriptor.value;
80
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
81
- __runInitializers(_classThis, _classExtraInitializers);
82
- }
83
- #bind_accessor_storage = __runInitializers(this, _bind_initializers, "");
84
- get bind() { return this.#bind_accessor_storage; }
85
- set bind(value) { this.#bind_accessor_storage = value; }
86
- #key_accessor_storage = (__runInitializers(this, _bind_extraInitializers), __runInitializers(this, _key_initializers, ""));
87
- get key() { return this.#key_accessor_storage; }
88
- set key(value) { this.#key_accessor_storage = value; }
89
- #template = (__runInitializers(this, _key_extraInitializers), query("template", this));
90
- #items = [];
91
- #scopes = new Map();
92
- connectedCallback() {
93
- const template = this.#template();
94
- if (this.firstElementChild !== template) {
95
- throw new Error("The first Node in j-for needs to be a template");
96
- }
97
- let currentScope = template.nextElementSibling;
98
- while (currentScope instanceof JForScope) {
99
- this.#scopes.set(currentScope.key, currentScope);
100
- currentScope = currentScope.nextElementSibling;
101
- }
102
- const token = new JToken(this.bind);
103
- this.dispatchEvent(new JoistValueEvent(token, ({ newValue, oldValue }) => {
104
- if (newValue !== oldValue) {
105
- if (isIterable(newValue)) {
106
- this.#items = newValue;
107
- }
108
- else {
109
- this.#items = [];
110
- }
111
- if (template.nextSibling === null) {
112
- this.createFromEmpty();
113
- }
114
- else {
115
- this.updateItems();
116
- }
117
- }
118
- }));
119
- }
120
- createFromEmpty() {
121
- const template = this.#template();
122
- const templateContent = template.content;
123
- const keyProperty = this.key;
124
- const fragment = document.createDocumentFragment();
125
- let index = 0;
126
- for (const value of this.#items) {
127
- const key = keyProperty && hasProperty(value, keyProperty)
128
- ? value[keyProperty]
129
- : index;
130
- const scope = new JForScope();
131
- scope.append(document.importNode(templateContent, true));
132
- scope.key = String(key);
133
- scope.each = { position: index + 1, index, value };
134
- fragment.appendChild(scope);
135
- this.#scopes.set(key, scope);
136
- index++;
137
- }
138
- this.append(fragment);
139
- }
140
- updateItems() {
141
- const template = this.#template();
142
- const leftoverScopes = new Map(this.#scopes);
143
- const keyProperty = this.key;
144
- let index = 0;
145
- for (const value of this.#items) {
146
- const key = keyProperty && hasProperty(value, keyProperty)
147
- ? value[keyProperty]
148
- : index;
149
- let scope = leftoverScopes.get(key);
150
- if (!scope) {
151
- scope = new JForScope();
152
- scope.append(document.importNode(template.content, true));
153
- this.#scopes.set(key, scope);
154
- }
155
- else {
156
- leftoverScopes.delete(key);
157
- }
158
- if (scope.key !== key || scope.each.value !== value) {
159
- scope.key = String(key);
160
- scope.each = { position: index + 1, index, value };
161
- }
162
- const child = this.children[index + 1];
163
- if (child !== scope) {
164
- this.insertBefore(scope, child);
165
- }
166
- index++;
167
- }
168
- for (const scope of leftoverScopes.values()) {
169
- scope.remove();
170
- }
171
- }
172
- disconnectedCallback() {
173
- for (const scope of this.#scopes.values()) {
174
- scope.remove();
175
- }
176
- this.#scopes.clear();
177
- this.#items = [];
178
- }
179
- };
180
- return JositForElement = _classThis;
181
- })();
182
- export { JositForElement };
183
- function isIterable(obj) {
184
- return obj != null && typeof obj[Symbol.iterator] === "function";
185
- }
186
- function hasProperty(item, key) {
187
- return Object.prototype.hasOwnProperty.call(item, key);
188
- }
189
- //# sourceMappingURL=for.element.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"for.element.js","sourceRoot":"","sources":["../../../../src/lib/templating/elements/for.element.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import "./for.element.js";
2
- import "./value.element.js";
@@ -1,153 +0,0 @@
1
- import "./for.element.js";
2
- import "./value.element.js";
3
- import { fixtureSync, html } from "@open-wc/testing";
4
- import { assert } from "chai";
5
- it("should iterate over an iterable", () => {
6
- const element = fixtureSync(html `
7
- <div
8
- @joist::value=${(e) => {
9
- e.update({
10
- oldValue: null,
11
- newValue: new Set([
12
- { id: "123", label: "Hello" },
13
- { id: "456", label: "World" },
14
- ]),
15
- });
16
- }}
17
- >
18
- <ul>
19
- <j-for bind="items" key="id">
20
- <template>
21
- <li>
22
- <j-value bind="each.value.label"></j-value>
23
- </li>
24
- </template>
25
- </j-for>
26
- </ul>
27
- </div>
28
- `);
29
- const listItems = element.querySelectorAll("li");
30
- assert.equal(listItems.length, 2);
31
- assert.equal(listItems[0].textContent?.trim(), "Hello");
32
- assert.equal(listItems[1].textContent?.trim(), "World");
33
- });
34
- it("should handle empty arrays", () => {
35
- const element = fixtureSync(html `
36
- <div
37
- @joist::value=${(e) => {
38
- e.update({
39
- oldValue: null,
40
- newValue: [],
41
- });
42
- }}
43
- >
44
- <j-for bind="items">
45
- <template>
46
- <div>Item</div>
47
- </template>
48
- </j-for>
49
- </div>
50
- `);
51
- assert.equal(element.querySelectorAll("div").length, 0);
52
- });
53
- it("should update when items are added or removed", () => {
54
- const element = fixtureSync(html `
55
- <div
56
- @joist::value=${(e) => {
57
- e.update({
58
- oldValue: null,
59
- newValue: [
60
- { id: "1", text: "First" },
61
- { id: "2", text: "Second" },
62
- ],
63
- });
64
- e.update({
65
- oldValue: null,
66
- newValue: [
67
- { id: "1", text: "First" },
68
- { id: "2", text: "Second" },
69
- { id: "3", text: "Third" },
70
- ],
71
- });
72
- e.update({
73
- oldValue: null,
74
- newValue: [
75
- { id: "1", text: "First" },
76
- { id: "3", text: "Third" },
77
- ],
78
- });
79
- }}
80
- >
81
- <j-for bind="items" key="id">
82
- <template>
83
- <j-value bind="each.value.text"></j-value>
84
- </template>
85
- </j-for>
86
- </div>
87
- `);
88
- const items = element.querySelectorAll("j-value");
89
- assert.equal(items.length, 2);
90
- assert.equal(items[0].textContent?.trim(), "First");
91
- assert.equal(items[1].textContent?.trim(), "Third");
92
- });
93
- it("should provide index and position information", () => {
94
- const element = fixtureSync(html `
95
- <div
96
- @joist::value=${(e) => {
97
- e.update({
98
- oldValue: null,
99
- newValue: ["A", "B", "C"],
100
- });
101
- }}
102
- >
103
- <j-for bind="items">
104
- <template>
105
- <j-value bind="each.value"></j-value>
106
- (index: <j-value bind="each.index"></j-value>,
107
- position: <j-value bind="each.position"></j-value>)
108
- </template>
109
- </j-for>
110
- </div>
111
- `);
112
- const items = element.querySelectorAll("j-for-scope");
113
- assert.equal(items.length, 3);
114
- assert.equal(items[0].textContent?.trim().replaceAll("\n", "").replaceAll(" ", ""), "A(index:0,position:1)");
115
- assert.equal(items[1].textContent?.trim().replaceAll("\n", "").replaceAll(" ", ""), "B(index:1,position:2)");
116
- assert.equal(items[2].textContent?.trim().replaceAll("\n", "").replaceAll(" ", ""), "C(index:2,position:3)");
117
- });
118
- it("should maintain DOM order when items are reordered", () => {
119
- const element = fixtureSync(html `
120
- <div
121
- @joist::value=${(e) => {
122
- e.update({
123
- oldValue: null,
124
- newValue: [
125
- { id: "1", text: "First" },
126
- { id: "2", text: "Second" },
127
- { id: "3", text: "Third" },
128
- ],
129
- });
130
- e.update({
131
- oldValue: null,
132
- newValue: [
133
- { id: "3", text: "Third" },
134
- { id: "1", text: "First" },
135
- { id: "2", text: "Second" },
136
- ],
137
- });
138
- }}
139
- >
140
- <j-for bind="items" key="id">
141
- <template>
142
- <j-value bind="each.value.text"></j-value>
143
- </template>
144
- </j-for>
145
- </div>
146
- `);
147
- const items = element.querySelectorAll("j-value");
148
- assert.equal(items.length, 3);
149
- assert.equal(items[0].textContent?.trim(), "Third");
150
- assert.equal(items[1].textContent?.trim(), "First");
151
- assert.equal(items[2].textContent?.trim(), "Second");
152
- });
153
- //# sourceMappingURL=for.element.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"for.element.test.js","sourceRoot":"","sources":["../../../../src/lib/templating/elements/for.element.test.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- declare global {
2
- interface HTMLElementTagNameMap {
3
- "j-if": JoistIfElement;
4
- }
5
- }
6
- export declare class JoistIfElement extends HTMLElement {
7
- #private;
8
- accessor bind: string;
9
- connectedCallback(): void;
10
- apply(value: unknown, isNegative: boolean): void;
11
- disconnectedCallback(): void;
12
- }
@@ -1,85 +0,0 @@
1
- import { __esDecorate, __runInitializers } from "tslib";
2
- import { attr } from "../../attr.js";
3
- import { element } from "../../element.js";
4
- import { queryAll } from "../../query-all.js";
5
- import { css, html } from "../../tags.js";
6
- import { JoistValueEvent } from "../events.js";
7
- import { JToken } from "../token.js";
8
- let JoistIfElement = (() => {
9
- let _classDecorators = [element({
10
- tagName: "j-if",
11
- shadowDom: [css `:host{display: contents;}`, html `<slot></slot>`],
12
- })];
13
- let _classDescriptor;
14
- let _classExtraInitializers = [];
15
- let _classThis;
16
- let _classSuper = HTMLElement;
17
- let _bind_decorators;
18
- let _bind_initializers = [];
19
- let _bind_extraInitializers = [];
20
- var JoistIfElement = class extends _classSuper {
21
- static { _classThis = this; }
22
- static {
23
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
24
- _bind_decorators = [attr()];
25
- __esDecorate(this, null, _bind_decorators, { kind: "accessor", name: "bind", static: false, private: false, access: { has: obj => "bind" in obj, get: obj => obj.bind, set: (obj, value) => { obj.bind = value; } }, metadata: _metadata }, _bind_initializers, _bind_extraInitializers);
26
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
27
- JoistIfElement = _classThis = _classDescriptor.value;
28
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
29
- __runInitializers(_classThis, _classExtraInitializers);
30
- }
31
- #bind_accessor_storage = __runInitializers(this, _bind_initializers, "");
32
- get bind() { return this.#bind_accessor_storage; }
33
- set bind(value) { this.#bind_accessor_storage = value; }
34
- #templates = (__runInitializers(this, _bind_extraInitializers), queryAll("template", this));
35
- connectedCallback() {
36
- const templates = Array.from(this.#templates());
37
- if (templates.length === 0) {
38
- throw new Error("j-if requires at least one template element");
39
- }
40
- if (templates.length > 2) {
41
- throw new Error("j-if can only have two template elements (if and else)");
42
- }
43
- if (templates.length === 2 &&
44
- !templates.some((t) => t.hasAttribute("else"))) {
45
- throw new Error("When using two templates, one must have the else attribute");
46
- }
47
- if (templates.length === 2 && templates[0].hasAttribute("else")) {
48
- [templates[0], templates[1]] = [templates[1], templates[0]];
49
- }
50
- this.#clean();
51
- const token = new JToken(this.bind);
52
- this.dispatchEvent(new JoistValueEvent(token, ({ newValue, oldValue }) => {
53
- if (newValue !== oldValue) {
54
- if (typeof newValue === "object" && newValue !== null) {
55
- this.apply(token.readTokenValueFrom(newValue), token.isNegated);
56
- }
57
- else {
58
- this.apply(newValue, token.isNegated);
59
- }
60
- }
61
- }));
62
- }
63
- apply(value, isNegative) {
64
- this.#clean();
65
- const templates = this.#templates();
66
- const shouldShowIf = isNegative ? !value : value;
67
- const templateToUse = shouldShowIf ? templates[0] : templates[1];
68
- if (templateToUse) {
69
- const content = document.importNode(templateToUse.content, true);
70
- this.appendChild(content);
71
- }
72
- }
73
- #clean() {
74
- while (!(this.lastChild instanceof HTMLTemplateElement)) {
75
- this.lastChild?.remove();
76
- }
77
- }
78
- disconnectedCallback() {
79
- this.#clean();
80
- }
81
- };
82
- return JoistIfElement = _classThis;
83
- })();
84
- export { JoistIfElement };
85
- //# sourceMappingURL=if.element.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"if.element.js","sourceRoot":"","sources":["../../../../src/lib/templating/elements/if.element.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- import "./if.element.js";
@@ -1,78 +0,0 @@
1
- import "./if.element.js";
2
- import { fixtureSync, html } from "@open-wc/testing";
3
- import { assert } from "chai";
4
- it("should render content when the bind value is truthy", () => {
5
- const element = fixtureSync(html `
6
- <div
7
- @joist::value=${(e) => {
8
- e.update({ oldValue: null, newValue: true });
9
- }}
10
- >
11
- <j-if bind="test">
12
- <template>Visible Content</template>
13
- </j-if>
14
- </div>
15
- `);
16
- assert.equal(element.textContent?.trim(), "Visible Content");
17
- });
18
- it("should not render content when the bind value is falsy", () => {
19
- const element = fixtureSync(html `
20
- <div
21
- @joist::value=${(e) => {
22
- e.update({ oldValue: null, newValue: true });
23
- e.update({ oldValue: null, newValue: false });
24
- }}
25
- >
26
- <j-if bind="test">
27
- <template>Visible Content</template>
28
- </j-if>
29
- </div>
30
- `);
31
- assert.equal(element.textContent?.trim(), "");
32
- });
33
- it("should handle negated tokens correctly", () => {
34
- const element = fixtureSync(html `
35
- <div
36
- @joist::value=${(e) => {
37
- e.update({ oldValue: null, newValue: false });
38
- }}
39
- >
40
- <j-if bind="!test">
41
- <template>Visible Content</template>
42
- </j-if>
43
- </div>
44
- `);
45
- assert.equal(element.textContent?.trim(), "Visible Content");
46
- });
47
- it("should render else template when condition is falsy", () => {
48
- const element = fixtureSync(html `
49
- <div
50
- @joist::value=${(e) => {
51
- e.update({ oldValue: null, newValue: false });
52
- }}
53
- >
54
- <j-if bind="test">
55
- <template>If Content</template>
56
- <template else>Else Content</template>
57
- </j-if>
58
- </div>
59
- `);
60
- assert.equal(element.textContent?.trim(), "Else Content");
61
- });
62
- it("should switch between if and else templates", () => {
63
- const element = fixtureSync(html `
64
- <div
65
- @joist::value=${(e) => {
66
- e.update({ oldValue: null, newValue: false });
67
- e.update({ oldValue: false, newValue: true });
68
- }}
69
- >
70
- <j-if bind="test">
71
- <template>If Content</template>
72
- <template else>Else Content</template>
73
- </j-if>
74
- </div>
75
- `);
76
- assert.equal(element.textContent?.trim(), "If Content");
77
- });
78
- //# sourceMappingURL=if.element.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"if.element.test.js","sourceRoot":"","sources":["../../../../src/lib/templating/elements/if.element.test.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAI9B,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAC7D,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAA;;sBAEZ,CAAC,CAAkB,EAAE,EAAE;QACrC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;;;;;;GAMJ,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;IAChE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAA;;sBAEZ,CAAC,CAAkB,EAAE,EAAE;QACrC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;;;;;;GAMJ,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;IAChD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAA;;sBAEZ,CAAC,CAAkB,EAAE,EAAE;QACrC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;;;;;;GAMJ,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAC7D,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAA;;sBAEZ,CAAC,CAAkB,EAAE,EAAE;QACrC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;;;;;;;GAOJ,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;IACrD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAA;;sBAEZ,CAAC,CAAkB,EAAE,EAAE;QACrC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;;;;;;;GAOJ,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,YAAY,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC"}
@@ -1,11 +0,0 @@
1
- import { JToken } from "../token.js";
2
- export declare class JAttrToken extends JToken {
3
- mapTo: string;
4
- mapsToProp: boolean;
5
- constructor(attr: Attr);
6
- }
7
- export declare class JoistIfElement extends HTMLElement {
8
- #private;
9
- accessor target: string;
10
- connectedCallback(): void;
11
- }