13
13
*/
14
14
15
15
import '@webcomponents/shadycss/apply-shim.min.js' ;
16
+
16
17
import {
17
18
html ,
18
19
LitElement ,
19
20
} from '../lit-element.js' ;
20
21
21
- import { generateElementName , nextFrame , getComputedStyleValue } from './test-helpers.js' ;
22
+ import {
23
+ generateElementName ,
24
+ getComputedStyleValue ,
25
+ nextFrame
26
+ } from './test-helpers.js' ;
22
27
23
28
declare global {
24
29
interface Window {
@@ -45,7 +50,8 @@ suite('Styling', () => {
45
50
test ( 'content shadowRoot is styled' , async ( ) => {
46
51
const name = generateElementName ( ) ;
47
52
customElements . define ( name , class extends LitElement {
48
- render ( ) { return html `
53
+ render ( ) {
54
+ return html `
49
55
< style >
50
56
div {
51
57
border : 2px solid blue;
@@ -69,7 +75,8 @@ suite('Styling', () => {
69
75
</ style > ` ;
70
76
const name = generateElementName ( ) ;
71
77
customElements . define ( name , class extends LitElement {
72
- render ( ) { return html `
78
+ render ( ) {
79
+ return html `
73
80
< style >
74
81
div {
75
82
border : 2px solid blue;
@@ -89,7 +96,8 @@ suite('Styling', () => {
89
96
test ( 'custom properties render' , async ( ) => {
90
97
const name = generateElementName ( ) ;
91
98
customElements . define ( name , class extends LitElement {
92
- render ( ) { return html `
99
+ render ( ) {
100
+ return html `
93
101
< style >
94
102
: host {
95
103
- - bor der: 8px solid red;
@@ -110,7 +118,8 @@ suite('Styling', () => {
110
118
111
119
test ( 'custom properties flow to nested elements' , async ( ) => {
112
120
customElements . define ( 'x-inner' , class extends LitElement {
113
- render ( ) { return html `
121
+ render ( ) {
122
+ return html `
114
123
< style >
115
124
div {
116
125
border : var (--border );
@@ -123,7 +132,8 @@ suite('Styling', () => {
123
132
class E extends LitElement {
124
133
inner : LitElement | null = null ;
125
134
126
- render ( ) { return html `
135
+ render ( ) {
136
+ return html `
127
137
< style >
128
138
x-inner {
129
139
--border : 8px solid red;
@@ -148,72 +158,76 @@ suite('Styling', () => {
148
158
assert . equal ( getComputedStyleValue ( div ! , 'border-top-width' ) . trim ( ) , '8px' ) ;
149
159
} ) ;
150
160
151
- test ( 'elements with custom properties can move between elements' , async ( ) => {
152
- customElements . define ( 'x-inner1' , class extends LitElement {
153
- render ( ) { return html `
161
+ test ( 'elements with custom properties can move between elements' ,
162
+ async ( ) => {
163
+ customElements . define ( 'x-inner1' , class extends LitElement {
164
+ render ( ) {
165
+ return html `
154
166
< style >
155
167
div {
156
168
border : var (--border );
157
169
}
158
170
</ style >
159
171
< div > Testing...</ div > ` ;
160
- }
161
- } ) ;
162
- const name1 = generateElementName ( ) ;
163
- customElements . define ( name1 , class extends LitElement {
164
-
165
- inner : Element | null = null ;
166
-
167
- render ( ) { return html `
172
+ }
173
+ } ) ;
174
+ const name1 = generateElementName ( ) ;
175
+ customElements . define ( name1 , class extends LitElement {
176
+ inner : Element | null = null ;
177
+
178
+ render ( ) {
179
+ return html `
168
180
< style >
169
181
x-inner1 {
170
182
--border : 2px solid red;
171
183
}
172
184
</ style >
173
185
< x-inner1 > </ x-inner1 > ` ;
174
- }
175
-
176
- firstUpdated ( ) {
177
- this . inner = this . shadowRoot ! . querySelector ( 'x-inner1' ) ;
178
- }
179
- } ) ;
180
- const name2 = generateElementName ( ) ;
181
- customElements . define ( name2 , class extends LitElement {
182
-
183
- render ( ) { return html `
186
+ }
187
+
188
+ firstUpdated ( ) {
189
+ this . inner = this . shadowRoot ! . querySelector ( 'x-inner1' ) ;
190
+ }
191
+ } ) ;
192
+ const name2 = generateElementName ( ) ;
193
+ customElements . define ( name2 , class extends LitElement {
194
+ render ( ) {
195
+ return html `
184
196
< style >
185
197
x-inner1 {
186
198
--border : 8px solid red;
187
199
}
188
200
</ style > ` ;
189
- }
190
-
191
- } ) ;
192
- const el = document . createElement ( name1 ) as LitElement ;
193
- const el2 = document . createElement ( name2 ) ;
194
- container . appendChild ( el ) ;
195
- container . appendChild ( el2 ) ;
196
- let div : Element | null ;
197
-
198
- // Workaround for Safari 9 Promise timing bugs.
199
- await el . updateComplete ;
200
-
201
- await nextFrame ( ) ;
202
- const inner = el . shadowRoot ! . querySelector ( 'x-inner1' ) ;
203
- div = inner ! . shadowRoot ! . querySelector ( 'div' ) ;
204
- assert . equal ( getComputedStyleValue ( div ! , 'border-top-width' ) . trim ( ) , '2px' ) ;
205
- el2 ! . shadowRoot ! . appendChild ( inner ! ) ;
206
-
207
- // Workaround for Safari 9 Promise timing bugs.
208
- await el . updateComplete ;
209
-
210
- await nextFrame ( ) ;
211
- assert . equal ( getComputedStyleValue ( div ! , 'border-top-width' ) . trim ( ) , '8px' ) ;
212
- } ) ;
201
+ }
202
+ } ) ;
203
+ const el = document . createElement ( name1 ) as LitElement ;
204
+ const el2 = document . createElement ( name2 ) ;
205
+ container . appendChild ( el ) ;
206
+ container . appendChild ( el2 ) ;
207
+ let div : Element | null ;
208
+
209
+ // Workaround for Safari 9 Promise timing bugs.
210
+ await el . updateComplete ;
211
+
212
+ await nextFrame ( ) ;
213
+ const inner = el . shadowRoot ! . querySelector ( 'x-inner1' ) ;
214
+ div = inner ! . shadowRoot ! . querySelector ( 'div' ) ;
215
+ assert . equal ( getComputedStyleValue ( div ! , 'border-top-width' ) . trim ( ) ,
216
+ '2px' ) ;
217
+ el2 ! . shadowRoot ! . appendChild ( inner ! ) ;
218
+
219
+ // Workaround for Safari 9 Promise timing bugs.
220
+ await el . updateComplete ;
221
+
222
+ await nextFrame ( ) ;
223
+ assert . equal ( getComputedStyleValue ( div ! , 'border-top-width' ) . trim ( ) ,
224
+ '8px' ) ;
225
+ } ) ;
213
226
214
227
test ( '@apply renders in nested elements' , async ( ) => {
215
228
customElements . define ( 'x-inner2' , class extends LitElement {
216
- render ( ) { return html `
229
+ render ( ) {
230
+ return html `
217
231
< style >
218
232
div {
219
233
@apply --bag;
@@ -225,7 +239,8 @@ suite('Styling', () => {
225
239
const name = generateElementName ( ) ;
226
240
class E extends LitElement {
227
241
inner : LitElement | null = null ;
228
- render ( ) { return html `
242
+ render ( ) {
243
+ return html `
229
244
< style >
230
245
x-inner2 {
231
246
--bag : {
@@ -248,14 +263,14 @@ suite('Styling', () => {
248
263
await el . updateComplete && await el . inner ! . updateComplete ;
249
264
250
265
await nextFrame ( ) ;
251
- const div = el . shadowRoot ! . querySelector ( 'x-inner2' ) ! . shadowRoot ! . querySelector ( 'div' ) ;
252
- assert . equal ( getComputedStyleValue ( div ! , 'border-top-width' ) . trim ( ) , '10px' ) ;
266
+ const div = el . shadowRoot ! . querySelector (
267
+ 'x-inner2' ) ! . shadowRoot ! . querySelector ( 'div' ) ;
268
+ assert . equal ( getComputedStyleValue ( div ! , 'border-top-width' ) . trim ( ) ,
269
+ '10px' ) ;
253
270
} ) ;
254
-
255
271
} ) ;
256
272
257
273
suite ( 'ShadyDOM' , ( ) => {
258
-
259
274
let container : HTMLElement ;
260
275
261
276
setup ( function ( ) {
@@ -273,28 +288,31 @@ suite('ShadyDOM', () => {
273
288
}
274
289
} ) ;
275
290
276
- test ( 'properties in styles render with initial value and cannot be changed' , async ( ) => {
277
- let border = `6px solid blue` ;
278
- const name = generateElementName ( ) ;
279
- customElements . define ( name , class extends LitElement {
280
- render ( ) { return html `
291
+ test ( 'properties in styles render with initial value and cannot be changed' ,
292
+ async ( ) => {
293
+ let border = `6px solid blue` ;
294
+ const name = generateElementName ( ) ;
295
+ customElements . define ( name , class extends LitElement {
296
+ render ( ) {
297
+ return html `
281
298
< style >
282
299
div {
283
300
border : ${ border } ;
284
301
}
285
302
</ style >
286
303
< div > Testing...</ div > ` ;
287
- }
288
- } ) ;
289
- const el = document . createElement ( name ) as LitElement ;
290
- container . appendChild ( el ) ;
291
- await el . updateComplete ;
292
- const div = el . shadowRoot ! . querySelector ( 'div' ) ;
293
- assert . equal ( getComputedStyleValue ( div ! , 'border-top-width' ) . trim ( ) , '6px' ) ;
294
- border = `4px solid orange` ;
295
- el . requestUpdate ( ) ;
296
- await el . updateComplete ;
297
- assert . equal ( getComputedStyleValue ( div ! , 'border-top-width' ) . trim ( ) , '6px' ) ;
298
- } ) ;
299
-
304
+ }
305
+ } ) ;
306
+ const el = document . createElement ( name ) as LitElement ;
307
+ container . appendChild ( el ) ;
308
+ await el . updateComplete ;
309
+ const div = el . shadowRoot ! . querySelector ( 'div' ) ;
310
+ assert . equal ( getComputedStyleValue ( div ! , 'border-top-width' ) . trim ( ) ,
311
+ '6px' ) ;
312
+ border = `4px solid orange` ;
313
+ el . requestUpdate ( ) ;
314
+ await el . updateComplete ;
315
+ assert . equal ( getComputedStyleValue ( div ! , 'border-top-width' ) . trim ( ) ,
316
+ '6px' ) ;
317
+ } ) ;
300
318
} ) ;
0 commit comments