ripple 0.3.72 → 0.3.74
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/CHANGELOG.md +66 -0
- package/package.json +3 -3
- package/src/jsx-runtime.d.ts +2 -8
- package/src/runtime/index-client.js +3 -13
- package/src/runtime/internal/client/blocks.js +3 -25
- package/src/runtime/internal/client/for.js +80 -5
- package/src/runtime/internal/client/index.js +0 -2
- package/src/runtime/internal/client/types.d.ts +0 -10
- package/tests/client/__snapshots__/computed-properties.test.tsrx.snap +8 -0
- package/tests/client/__snapshots__/for.test.tsrx.snap +22 -0
- package/tests/client/__snapshots__/html.test.tsrx.snap +4 -0
- package/tests/client/array/array.copy-within.test.tsrx +19 -19
- package/tests/client/array/array.derived.test.tsrx +97 -109
- package/tests/client/array/array.iteration.test.tsrx +28 -28
- package/tests/client/array/array.mutations.test.tsrx +68 -68
- package/tests/client/array/array.static.test.tsrx +82 -92
- package/tests/client/array/array.to-methods.test.tsrx +15 -15
- package/tests/client/async-suspend.test.tsrx +180 -179
- package/tests/client/basic/__snapshots__/basic.attributes.test.tsrx.snap +2 -0
- package/tests/client/basic/__snapshots__/basic.rendering.test.tsrx.snap +4 -0
- package/tests/client/basic/basic.attributes.test.tsrx +273 -317
- package/tests/client/basic/basic.collections.test.tsrx +55 -61
- package/tests/client/basic/basic.components.test.tsrx +196 -218
- package/tests/client/basic/basic.errors.test.tsrx +70 -76
- package/tests/client/basic/basic.events.test.tsrx +80 -85
- package/tests/client/basic/basic.get-set.test.tsrx +54 -64
- package/tests/client/basic/basic.hmr.test.tsrx +15 -19
- package/tests/client/basic/basic.reactivity.test.tsrx +121 -135
- package/tests/client/basic/basic.rendering.test.tsrx +273 -178
- package/tests/client/basic/basic.utilities.test.tsrx +8 -10
- package/tests/client/boundaries.test.tsrx +18 -18
- package/tests/client/compiler/compiler.assignments.test.tsrx +77 -76
- package/tests/client/compiler/compiler.attributes.test.tsrx +18 -14
- package/tests/client/compiler/compiler.basic.test.tsrx +357 -288
- package/tests/client/compiler/compiler.regex.test.tsrx +40 -44
- package/tests/client/compiler/compiler.tracked-access.test.tsrx +57 -38
- package/tests/client/compiler/compiler.try-in-function.test.tsrx +16 -16
- package/tests/client/compiler/compiler.typescript.test.tsrx +4 -3
- package/tests/client/composite/composite.dynamic-components.test.tsrx +41 -44
- package/tests/client/composite/composite.generics.test.tsrx +165 -167
- package/tests/client/composite/composite.props.test.tsrx +66 -74
- package/tests/client/composite/composite.reactivity.test.tsrx +132 -166
- package/tests/client/composite/composite.render.test.tsrx +92 -101
- package/tests/client/computed-properties.test.tsrx +14 -18
- package/tests/client/context.test.tsrx +14 -18
- package/tests/client/css/global-additional-cases.test.tsrx +491 -437
- package/tests/client/css/global-advanced-selectors.test.tsrx +169 -153
- package/tests/client/css/global-at-rules.test.tsrx +71 -66
- package/tests/client/css/global-basic.test.tsrx +105 -98
- package/tests/client/css/global-classes-ids.test.tsrx +128 -114
- package/tests/client/css/global-combinators.test.tsrx +83 -78
- package/tests/client/css/global-complex-nesting.test.tsrx +134 -120
- package/tests/client/css/global-edge-cases.test.tsrx +138 -120
- package/tests/client/css/global-keyframes.test.tsrx +108 -96
- package/tests/client/css/global-nested.test.tsrx +88 -78
- package/tests/client/css/global-pseudo.test.tsrx +104 -98
- package/tests/client/css/global-scoping.test.tsrx +145 -125
- package/tests/client/css/style-identifier.test.tsrx +62 -69
- package/tests/client/date.test.tsrx +83 -83
- package/tests/client/dynamic-elements.test.tsrx +227 -283
- package/tests/client/events.test.tsrx +252 -266
- package/tests/client/for.test.tsrx +120 -127
- package/tests/client/head.test.tsrx +40 -48
- package/tests/client/html.test.tsrx +37 -49
- package/tests/client/input-value.test.tsrx +1125 -1354
- package/tests/client/lazy-array.test.tsrx +10 -16
- package/tests/client/lazy-destructuring.test.tsrx +169 -221
- package/tests/client/map.test.tsrx +39 -41
- package/tests/client/media-query.test.tsrx +15 -19
- package/tests/client/object.test.tsrx +46 -56
- package/tests/client/portal.test.tsrx +31 -37
- package/tests/client/ref.test.tsrx +173 -193
- package/tests/client/return.test.tsrx +62 -37
- package/tests/client/set.test.tsrx +33 -33
- package/tests/client/svg.test.tsrx +195 -215
- package/tests/client/switch.test.tsrx +201 -191
- package/tests/client/track-async-hydration.test.tsrx +14 -18
- package/tests/client/tracked-index-access.test.tsrx +18 -28
- package/tests/client/try.test.tsrx +494 -619
- package/tests/client/tsx.test.tsrx +286 -292
- package/tests/client/typescript-generics.test.tsrx +121 -129
- package/tests/client/url/url.derived.test.tsrx +21 -25
- package/tests/client/url/url.parsing.test.tsrx +35 -35
- package/tests/client/url/url.partial-removal.test.tsrx +32 -32
- package/tests/client/url/url.reactivity.test.tsrx +68 -72
- package/tests/client/url/url.serialization.test.tsrx +8 -8
- package/tests/client/url-search-params/url-search-params.derived.test.tsrx +21 -27
- package/tests/client/url-search-params/url-search-params.initialization.test.tsrx +16 -16
- package/tests/client/url-search-params/url-search-params.iteration.test.tsrx +37 -37
- package/tests/client/url-search-params/url-search-params.mutation.test.tsrx +56 -60
- package/tests/client/url-search-params/url-search-params.retrieval.test.tsrx +32 -34
- package/tests/client/url-search-params/url-search-params.serialization.test.tsrx +9 -9
- package/tests/client/url-search-params/url-search-params.tracked-url.test.tsrx +10 -10
- package/tests/hydration/compiled/client/basic.js +390 -319
- package/tests/hydration/compiled/client/composite.js +52 -44
- package/tests/hydration/compiled/client/for.js +734 -604
- package/tests/hydration/compiled/client/head.js +183 -103
- package/tests/hydration/compiled/client/html.js +93 -86
- package/tests/hydration/compiled/client/if-children.js +95 -71
- package/tests/hydration/compiled/client/if.js +113 -89
- package/tests/hydration/compiled/client/mixed-control-flow.js +225 -209
- package/tests/hydration/compiled/client/nested-control-flow.js +94 -98
- package/tests/hydration/compiled/client/reactivity.js +26 -24
- package/tests/hydration/compiled/client/return.js +8 -42
- package/tests/hydration/compiled/client/switch.js +208 -173
- package/tests/hydration/compiled/client/track-async-serialization.js +176 -128
- package/tests/hydration/compiled/client/try.js +29 -21
- package/tests/hydration/compiled/server/basic.js +210 -221
- package/tests/hydration/compiled/server/composite.js +13 -14
- package/tests/hydration/compiled/server/for.js +427 -444
- package/tests/hydration/compiled/server/head.js +199 -189
- package/tests/hydration/compiled/server/html.js +33 -41
- package/tests/hydration/compiled/server/if-children.js +114 -117
- package/tests/hydration/compiled/server/if.js +77 -83
- package/tests/hydration/compiled/server/mixed-control-flow.js +145 -150
- package/tests/hydration/compiled/server/nested-control-flow.js +10 -0
- package/tests/hydration/compiled/server/reactivity.js +24 -22
- package/tests/hydration/compiled/server/return.js +6 -18
- package/tests/hydration/compiled/server/switch.js +179 -176
- package/tests/hydration/compiled/server/track-async-serialization.js +88 -70
- package/tests/hydration/compiled/server/try.js +31 -35
- package/tests/hydration/components/basic.tsrx +216 -258
- package/tests/hydration/components/composite.tsrx +32 -42
- package/tests/hydration/components/events.tsrx +81 -101
- package/tests/hydration/components/for.tsrx +270 -336
- package/tests/hydration/components/head.tsrx +43 -39
- package/tests/hydration/components/hmr.tsrx +16 -22
- package/tests/hydration/components/html-in-template.tsrx +15 -21
- package/tests/hydration/components/html.tsrx +442 -526
- package/tests/hydration/components/if-children.tsrx +107 -125
- package/tests/hydration/components/if.tsrx +68 -90
- package/tests/hydration/components/mixed-control-flow.tsrx +65 -72
- package/tests/hydration/components/nested-control-flow.tsrx +202 -216
- package/tests/hydration/components/portal.tsrx +33 -41
- package/tests/hydration/components/reactivity.tsrx +26 -34
- package/tests/hydration/components/return.tsrx +4 -6
- package/tests/hydration/components/switch.tsrx +73 -78
- package/tests/hydration/components/track-async-serialization.tsrx +83 -93
- package/tests/hydration/components/try.tsrx +37 -51
- package/tests/hydration/switch.test.js +8 -8
- package/tests/server/await.test.tsrx +3 -3
- package/tests/server/basic.attributes.test.tsrx +117 -162
- package/tests/server/basic.components.test.tsrx +163 -193
- package/tests/server/basic.test.tsrx +298 -198
- package/tests/server/compiler.test.tsrx +142 -72
- package/tests/server/composite.props.test.tsrx +54 -58
- package/tests/server/composite.test.tsrx +165 -167
- package/tests/server/context.test.tsrx +13 -17
- package/tests/server/dynamic-elements.test.tsrx +103 -135
- package/tests/server/for.test.tsrx +115 -84
- package/tests/server/head.test.tsrx +31 -31
- package/tests/server/html-nesting-validation.test.tsrx +16 -8
- package/tests/server/if.test.tsrx +49 -59
- package/tests/server/lazy-destructuring.test.tsrx +288 -366
- package/tests/server/return.test.tsrx +58 -36
- package/tests/server/streaming-ssr.test.tsrx +4 -4
- package/tests/server/style-identifier.test.tsrx +58 -66
- package/tests/server/switch.test.tsrx +89 -97
- package/tests/server/track-async-serialization.test.tsrx +85 -103
- package/tests/server/try.test.tsrx +275 -360
- package/tests/utils/ref-types.test.js +72 -0
- package/tests/utils/vite-plugin-config.test.js +41 -74
- package/types/index.d.ts +1 -0
- package/src/runtime/internal/client/compat.js +0 -40
- package/tests/utils/compiler-compat-config.test.js +0 -38
|
@@ -3,11 +3,9 @@ import { createRefKey, track } from 'ripple';
|
|
|
3
3
|
|
|
4
4
|
describe('server dynamic DOM elements', () => {
|
|
5
5
|
it('renders static dynamic element', async () => {
|
|
6
|
-
function App() {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
<@tag>{'Hello World'}</@tag>
|
|
10
|
-
</>;
|
|
6
|
+
function App() @{
|
|
7
|
+
let tag = track('div');
|
|
8
|
+
<@tag>{'Hello World'}</@tag>
|
|
11
9
|
}
|
|
12
10
|
|
|
13
11
|
const { body } = await render(App);
|
|
@@ -18,12 +16,10 @@ describe('server dynamic DOM elements', () => {
|
|
|
18
16
|
// The ts errors below are due to limitations in our current tsx generation for dynamic elements.
|
|
19
17
|
// They can be ignored for now. But we'll fix them via jsx() vs <jsx>
|
|
20
18
|
it('renders static dynamic element from a plain object with a tracked property', async () => {
|
|
21
|
-
function App() {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
<@tag>{'Hello World'}</@tag>
|
|
26
|
-
</>;
|
|
19
|
+
function App() @{
|
|
20
|
+
let obj = { tag: track('div') };
|
|
21
|
+
let tag = obj.tag;
|
|
22
|
+
<@tag>{'Hello World'}</@tag>
|
|
27
23
|
}
|
|
28
24
|
|
|
29
25
|
const { body } = await render(App);
|
|
@@ -32,12 +28,10 @@ describe('server dynamic DOM elements', () => {
|
|
|
32
28
|
});
|
|
33
29
|
|
|
34
30
|
it('renders static dynamic element from a tracked object with a tracked property', async () => {
|
|
35
|
-
function App() {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<@tag>{'Hello World'}</@tag>
|
|
40
|
-
</>;
|
|
31
|
+
function App() @{
|
|
32
|
+
let obj = track({ tag: track('div') });
|
|
33
|
+
let tag = obj.value.tag;
|
|
34
|
+
<@tag>{'Hello World'}</@tag>
|
|
41
35
|
}
|
|
42
36
|
|
|
43
37
|
const { body } = await render(App);
|
|
@@ -48,12 +42,10 @@ describe('server dynamic DOM elements', () => {
|
|
|
48
42
|
it(
|
|
49
43
|
'renders static dynamic element from a tracked object with a computed tracked property',
|
|
50
44
|
async () => {
|
|
51
|
-
function App() {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
<@tag>{'Hello World'}</@tag>
|
|
56
|
-
</>;
|
|
45
|
+
function App() @{
|
|
46
|
+
let obj = track({ tag: track('div') });
|
|
47
|
+
let tag = obj.value['tag'];
|
|
48
|
+
<@tag>{'Hello World'}</@tag>
|
|
57
49
|
}
|
|
58
50
|
|
|
59
51
|
const { body } = await render(App);
|
|
@@ -63,11 +55,9 @@ describe('server dynamic DOM elements', () => {
|
|
|
63
55
|
);
|
|
64
56
|
|
|
65
57
|
it('renders self-closing dynamic element', async () => {
|
|
66
|
-
function App() {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
<@tag type="text" value="test" />
|
|
70
|
-
</>;
|
|
58
|
+
function App() @{
|
|
59
|
+
let tag = track('input');
|
|
60
|
+
<@tag type="text" value="test" />
|
|
71
61
|
}
|
|
72
62
|
|
|
73
63
|
const { body } = await render(App);
|
|
@@ -76,12 +66,10 @@ describe('server dynamic DOM elements', () => {
|
|
|
76
66
|
});
|
|
77
67
|
|
|
78
68
|
it('handles dynamic element with attributes', async () => {
|
|
79
|
-
function App() {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
<@tag class={className} id="test" data-testid="dynamic-element">{'Content'}</@tag>
|
|
84
|
-
</>;
|
|
69
|
+
function App() @{
|
|
70
|
+
let tag = track('div');
|
|
71
|
+
let &[className] = track('test-class');
|
|
72
|
+
<@tag class={className} id="test" data-testid="dynamic-element">{'Content'}</@tag>
|
|
85
73
|
}
|
|
86
74
|
const { body } = await render(App);
|
|
87
75
|
const { document } = parseHtml(body);
|
|
@@ -95,14 +83,12 @@ describe('server dynamic DOM elements', () => {
|
|
|
95
83
|
});
|
|
96
84
|
|
|
97
85
|
it('handles nested dynamic elements', async () => {
|
|
98
|
-
function App() {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
<@
|
|
103
|
-
|
|
104
|
-
</@outerTag>
|
|
105
|
-
</>;
|
|
86
|
+
function App() @{
|
|
87
|
+
let outerTag = track('div');
|
|
88
|
+
let innerTag = track('span');
|
|
89
|
+
<@outerTag class="outer">
|
|
90
|
+
<@innerTag class="inner">{'Nested content'}</@innerTag>
|
|
91
|
+
</@outerTag>
|
|
106
92
|
}
|
|
107
93
|
const { body } = await render(App);
|
|
108
94
|
const { document } = parseHtml(body);
|
|
@@ -117,14 +103,10 @@ describe('server dynamic DOM elements', () => {
|
|
|
117
103
|
});
|
|
118
104
|
|
|
119
105
|
it('handles dynamic element with class object', async () => {
|
|
120
|
-
function App() {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
<@tag class={{ active: active, 'dynamic-element': true }}>
|
|
125
|
-
{'Element with class object'}
|
|
126
|
-
</@tag>
|
|
127
|
-
</>;
|
|
106
|
+
function App() @{
|
|
107
|
+
let tag = track('div');
|
|
108
|
+
let &[active] = track(true);
|
|
109
|
+
<@tag class={{ active: active, 'dynamic-element': true }}>{'Element with class object'}</@tag>
|
|
128
110
|
}
|
|
129
111
|
|
|
130
112
|
const { body } = await render(App);
|
|
@@ -137,19 +119,15 @@ describe('server dynamic DOM elements', () => {
|
|
|
137
119
|
});
|
|
138
120
|
|
|
139
121
|
it('handles dynamic element with style object', async () => {
|
|
140
|
-
function App() {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
>
|
|
150
|
-
{'Styled dynamic element'}
|
|
151
|
-
</@tag>
|
|
152
|
-
</>;
|
|
122
|
+
function App() @{
|
|
123
|
+
let tag = track('span');
|
|
124
|
+
<@tag
|
|
125
|
+
style={{
|
|
126
|
+
color: 'red',
|
|
127
|
+
fontSize: '16px',
|
|
128
|
+
fontWeight: 'bold',
|
|
129
|
+
}}
|
|
130
|
+
>{'Styled dynamic element'}</@tag>
|
|
153
131
|
}
|
|
154
132
|
|
|
155
133
|
const { body } = await render(App);
|
|
@@ -163,16 +141,14 @@ describe('server dynamic DOM elements', () => {
|
|
|
163
141
|
});
|
|
164
142
|
|
|
165
143
|
it('handles dynamic element with spread attributes', async () => {
|
|
166
|
-
function App() {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
<@tag {...attrs} data-extra="additional">{'Element with spread attributes'}</@tag>
|
|
175
|
-
</>;
|
|
144
|
+
function App() @{
|
|
145
|
+
let tag = track('section');
|
|
146
|
+
const attrs = {
|
|
147
|
+
id: 'spread-section',
|
|
148
|
+
'data-testid': 'spread-test',
|
|
149
|
+
class: 'spread-class',
|
|
150
|
+
};
|
|
151
|
+
<@tag {...attrs} data-extra="additional">{'Element with spread attributes'}</@tag>
|
|
176
152
|
}
|
|
177
153
|
const { body } = await render(App);
|
|
178
154
|
const { document } = parseHtml(body);
|
|
@@ -188,18 +164,14 @@ describe('server dynamic DOM elements', () => {
|
|
|
188
164
|
it('handles dynamic element with ref not rendered', async () => {
|
|
189
165
|
let capturedElement: HTMLElement | null = null;
|
|
190
166
|
|
|
191
|
-
function App() {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
>
|
|
200
|
-
{'Element with ref'}
|
|
201
|
-
</@tag>
|
|
202
|
-
</>;
|
|
167
|
+
function App() @{
|
|
168
|
+
let tag = track('article');
|
|
169
|
+
<@tag
|
|
170
|
+
ref={(node: HTMLElement) => {
|
|
171
|
+
capturedElement = node;
|
|
172
|
+
}}
|
|
173
|
+
id="ref-test"
|
|
174
|
+
>{'Element with ref'}</@tag>
|
|
203
175
|
}
|
|
204
176
|
|
|
205
177
|
const { body } = await render(App);
|
|
@@ -215,21 +187,19 @@ describe('server dynamic DOM elements', () => {
|
|
|
215
187
|
});
|
|
216
188
|
|
|
217
189
|
it('handles dynamic element with createRefKey in spread', async () => {
|
|
218
|
-
function App() {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
<@tag {...dynamicProps}>{'Element with spread ref'}</@tag>
|
|
232
|
-
</>;
|
|
190
|
+
function App() @{
|
|
191
|
+
let tag = track('header');
|
|
192
|
+
function elementRef(node: HTMLElement) {
|
|
193
|
+
// Set an attribute on the element to prove ref was called
|
|
194
|
+
node.setAttribute('data-spread-ref-called', 'true');
|
|
195
|
+
node.setAttribute('data-spread-ref-tag', node.tagName.toLowerCase());
|
|
196
|
+
}
|
|
197
|
+
const dynamicProps = {
|
|
198
|
+
id: 'spread-ref-test',
|
|
199
|
+
class: 'ref-element',
|
|
200
|
+
[createRefKey()]: elementRef,
|
|
201
|
+
};
|
|
202
|
+
<@tag {...dynamicProps}>{'Element with spread ref'}</@tag>
|
|
233
203
|
}
|
|
234
204
|
|
|
235
205
|
const { body } = await render(App);
|
|
@@ -245,16 +215,16 @@ describe('server dynamic DOM elements', () => {
|
|
|
245
215
|
});
|
|
246
216
|
|
|
247
217
|
it('applies scoped CSS to dynamic elements', async () => {
|
|
248
|
-
function App() {
|
|
249
|
-
|
|
250
|
-
|
|
218
|
+
function App() @{
|
|
219
|
+
let tag = track('div');
|
|
220
|
+
<>
|
|
251
221
|
<@tag class="test-class">{'Dynamic element'}</@tag>
|
|
252
222
|
<style>
|
|
253
223
|
.test-class {
|
|
254
224
|
color: red;
|
|
255
225
|
}
|
|
256
226
|
</style>
|
|
257
|
-
|
|
227
|
+
</>
|
|
258
228
|
}
|
|
259
229
|
|
|
260
230
|
const { body } = await render(App);
|
|
@@ -273,9 +243,9 @@ describe('server dynamic DOM elements', () => {
|
|
|
273
243
|
function DynamicButton(&{ ...rest }: PropsWithExtras<{
|
|
274
244
|
class: string;
|
|
275
245
|
id: string;
|
|
276
|
-
}>) {
|
|
277
|
-
|
|
278
|
-
|
|
246
|
+
}>) @{
|
|
247
|
+
const tag = track('button');
|
|
248
|
+
<>
|
|
279
249
|
<@tag {...rest}>{rest.class}</@tag>
|
|
280
250
|
<style>
|
|
281
251
|
.even {
|
|
@@ -285,14 +255,12 @@ describe('server dynamic DOM elements', () => {
|
|
|
285
255
|
background-color: red;
|
|
286
256
|
}
|
|
287
257
|
</style>
|
|
288
|
-
|
|
258
|
+
</>
|
|
289
259
|
}
|
|
290
260
|
|
|
291
|
-
function App() {
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
<DynamicButton class={count % 2 ? 'even' : 'odd'} id={count % 2 ? 'even' : 'odd'} />
|
|
295
|
-
</>;
|
|
261
|
+
function App() @{
|
|
262
|
+
let &[count] = track(0);
|
|
263
|
+
<DynamicButton class={count % 2 ? 'even' : 'odd'} id={count % 2 ? 'even' : 'odd'} />
|
|
296
264
|
}
|
|
297
265
|
|
|
298
266
|
const { body } = await render(App);
|
|
@@ -312,9 +280,9 @@ describe('server dynamic DOM elements', () => {
|
|
|
312
280
|
});
|
|
313
281
|
|
|
314
282
|
it('adds scoping class to dynamic elements', async () => {
|
|
315
|
-
function App() {
|
|
316
|
-
|
|
317
|
-
|
|
283
|
+
function App() @{
|
|
284
|
+
let tag = track('div');
|
|
285
|
+
<>
|
|
318
286
|
<@tag class="scoped">
|
|
319
287
|
<p>{'Scoped dynamic element'}</p>
|
|
320
288
|
</@tag>
|
|
@@ -323,7 +291,7 @@ describe('server dynamic DOM elements', () => {
|
|
|
323
291
|
color: blue;
|
|
324
292
|
}
|
|
325
293
|
</style>
|
|
326
|
-
|
|
294
|
+
</>
|
|
327
295
|
}
|
|
328
296
|
|
|
329
297
|
const { body } = await render(App);
|
|
@@ -341,9 +309,9 @@ describe('server dynamic DOM elements', () => {
|
|
|
341
309
|
async () => {
|
|
342
310
|
// NOTE: We always add the class scoping hash if there is css
|
|
343
311
|
// but the tag selector will be marked as unused if it's not explicitly seen in the template.
|
|
344
|
-
function App() {
|
|
345
|
-
|
|
346
|
-
|
|
312
|
+
function App() @{
|
|
313
|
+
let tag = track('div');
|
|
314
|
+
<>
|
|
347
315
|
<@tag class="scoped">
|
|
348
316
|
<p>{'Scoped dynamic element'}</p>
|
|
349
317
|
</@tag>
|
|
@@ -352,7 +320,7 @@ describe('server dynamic DOM elements', () => {
|
|
|
352
320
|
color: blue;
|
|
353
321
|
}
|
|
354
322
|
</style>
|
|
355
|
-
|
|
323
|
+
</>
|
|
356
324
|
}
|
|
357
325
|
|
|
358
326
|
const { body } = await render(App);
|
|
@@ -367,8 +335,8 @@ describe('server dynamic DOM elements', () => {
|
|
|
367
335
|
);
|
|
368
336
|
|
|
369
337
|
it('doesn\'t add scoping class to components inside dynamic element', async () => {
|
|
370
|
-
function Child() {
|
|
371
|
-
|
|
338
|
+
function Child() @{
|
|
339
|
+
<>
|
|
372
340
|
<div class="child">
|
|
373
341
|
<p>{'I am a child component'}</p>
|
|
374
342
|
</div>
|
|
@@ -377,12 +345,12 @@ describe('server dynamic DOM elements', () => {
|
|
|
377
345
|
color: blue;
|
|
378
346
|
}
|
|
379
347
|
</style>
|
|
380
|
-
|
|
348
|
+
</>
|
|
381
349
|
}
|
|
382
350
|
|
|
383
|
-
function App() {
|
|
384
|
-
|
|
385
|
-
|
|
351
|
+
function App() @{
|
|
352
|
+
let tag = track('div');
|
|
353
|
+
<>
|
|
386
354
|
<@tag class="scoped">
|
|
387
355
|
<p>{'Scoped dynamic element'}</p>
|
|
388
356
|
<Child />
|
|
@@ -392,7 +360,7 @@ describe('server dynamic DOM elements', () => {
|
|
|
392
360
|
color: blue;
|
|
393
361
|
}
|
|
394
362
|
</style>
|
|
395
|
-
|
|
363
|
+
</>
|
|
396
364
|
}
|
|
397
365
|
|
|
398
366
|
const { body } = await render(App);
|
|
@@ -415,8 +383,8 @@ describe('server dynamic DOM elements', () => {
|
|
|
415
383
|
});
|
|
416
384
|
|
|
417
385
|
it('doesn\'t add scoping class to dynamically rendered component', async () => {
|
|
418
|
-
function Child() {
|
|
419
|
-
|
|
386
|
+
function Child() @{
|
|
387
|
+
<>
|
|
420
388
|
<div class="child">
|
|
421
389
|
<p>{'I am a child component'}</p>
|
|
422
390
|
</div>
|
|
@@ -425,19 +393,19 @@ describe('server dynamic DOM elements', () => {
|
|
|
425
393
|
color: green;
|
|
426
394
|
}
|
|
427
395
|
</style>
|
|
428
|
-
|
|
396
|
+
</>
|
|
429
397
|
}
|
|
430
398
|
|
|
431
|
-
function App() {
|
|
432
|
-
|
|
433
|
-
|
|
399
|
+
function App() @{
|
|
400
|
+
let tag = track(() => Child);
|
|
401
|
+
<>
|
|
434
402
|
<@tag />
|
|
435
403
|
<style>
|
|
436
404
|
.child {
|
|
437
405
|
color: red;
|
|
438
406
|
}
|
|
439
407
|
</style>
|
|
440
|
-
|
|
408
|
+
</>
|
|
441
409
|
}
|
|
442
410
|
|
|
443
411
|
const { body } = await render(App);
|