File tree 3 files changed +20
-1
lines changed
3 files changed +20
-1
lines changed Original file line number Diff line number Diff line change @@ -193,6 +193,13 @@ <h2>Localised Dates</h2>
193
193
</ relative-time >
194
194
</ p >
195
195
196
+ < p >
197
+ Lazily added datetime via setAttribute
198
+ < relative-time id ="lazy " tense ="past ">
199
+ This will display in one second.
200
+ </ relative-time >
201
+ </ p >
202
+
196
203
<!-- <script type="module" src="../dist/index.js"></script> -->
197
204
< script type ="module " src ="https://unpkg.com/@github/relative-time-element@latest/dist/bundle.js "> </ script >
198
205
< script >
@@ -203,6 +210,9 @@ <h2>Localised Dates</h2>
203
210
document . getElementById ( 'dynamic2' ) . date = new Date ( Date . now ( ) - 30000 )
204
211
document . getElementById ( 'dynamic3' ) . date = new Date ( Date . now ( ) + 5000 )
205
212
document . getElementById ( 'dynamic4' ) . date = new Date ( )
213
+ setTimeout ( ( ) => {
214
+ document . getElementById ( 'lazy' ) . setAttribute ( 'datetime' , new Date ( ) . toJSON ( ) )
215
+ } , 1000 )
206
216
</ script >
207
217
</ body >
208
218
</ html >
Original file line number Diff line number Diff line change @@ -426,6 +426,7 @@ export class RelativeTimeElement extends HTMLElement implements Intl.DateTimeFor
426
426
this . #updating = ( async ( ) => {
427
427
await Promise . resolve ( )
428
428
this . update ( )
429
+ this . #updating = false
429
430
} ) ( )
430
431
}
431
432
}
@@ -472,7 +473,6 @@ export class RelativeTimeElement extends HTMLElement implements Intl.DateTimeFor
472
473
} else {
473
474
dateObserver . unobserve ( this )
474
475
}
475
- this . #updating = false
476
476
}
477
477
}
478
478
Original file line number Diff line number Diff line change @@ -70,6 +70,15 @@ suite('relative-time', function () {
70
70
assert . equal ( counter , 1 )
71
71
} )
72
72
73
+ test ( 'calls update even after nullish datetime' , async ( ) => {
74
+ const el = document . createElement ( 'relative-time' )
75
+ el . setAttribute ( 'datetime' , '' )
76
+ await new Promise ( resolve => setTimeout ( resolve , 10 ) )
77
+ el . setAttribute ( 'datetime' , new Date ( ) . toISOString ( ) )
78
+ await Promise . resolve ( )
79
+ assert ( el . shadowRoot . textContent . length > 0 , 'should have set time, but textContent is empty' )
80
+ } )
81
+
73
82
test ( 'sets title back to default if removed' , async ( ) => {
74
83
const el = document . createElement ( 'relative-time' )
75
84
el . setAttribute ( 'datetime' , new Date ( ) . toISOString ( ) )
You can’t perform that action at this time.
0 commit comments