@@ -70,13 +70,18 @@ abstract class BaseTestComponent {
70
70
@ViewChild ( 'table' ) table : ElementRef ;
71
71
72
72
preservedValues = new FormValueContainer < PeriodicElement , { 'name' : string } > ( ) ;
73
-
74
73
nameEditDisabled = false ;
75
74
ignoreSubmitUnlessValid = true ;
76
75
clickOutBehavior : PopoverEditClickOutBehavior = 'close' ;
77
76
colspan : CdkPopoverEditColspan = { } ;
78
77
direction : Direction = 'ltr' ;
79
78
79
+ constructor ( ) {
80
+ this . renderData ( ) ;
81
+ }
82
+
83
+ abstract renderData ( ) : void ;
84
+
80
85
onSubmit ( element : PeriodicElement , form : NgForm ) {
81
86
if ( ! form . valid ) { return ; }
82
87
@@ -202,7 +207,11 @@ abstract class BaseTestComponent {
202
207
`
203
208
} )
204
209
class VanillaTableOutOfCell extends BaseTestComponent {
205
- elements = createElementData ( ) ;
210
+ elements : ChemicalElement [ ] ;
211
+
212
+ renderData ( ) {
213
+ this . elements = createElementData ( ) ;
214
+ }
206
215
}
207
216
208
217
@Component ( {
@@ -231,7 +240,11 @@ class VanillaTableOutOfCell extends BaseTestComponent {
231
240
`
232
241
} )
233
242
class VanillaTableInCell extends BaseTestComponent {
234
- elements = createElementData ( ) ;
243
+ elements : ChemicalElement [ ] ;
244
+
245
+ renderData ( ) {
246
+ this . elements = createElementData ( ) ;
247
+ }
235
248
}
236
249
237
250
class ElementDataSource extends DataSource < PeriodicElement > {
@@ -289,7 +302,11 @@ class ElementDataSource extends DataSource<PeriodicElement> {
289
302
} )
290
303
class CdkFlexTableInCell extends BaseTestComponent {
291
304
displayedColumns = [ 'before' , 'name' , 'weight' ] ;
292
- dataSource = new ElementDataSource ( ) ;
305
+ dataSource : ElementDataSource ;
306
+
307
+ renderData ( ) {
308
+ this . dataSource = new ElementDataSource ( ) ;
309
+ }
293
310
}
294
311
295
312
@Component ( {
@@ -335,7 +352,11 @@ class CdkFlexTableInCell extends BaseTestComponent {
335
352
} )
336
353
class CdkTableInCell extends BaseTestComponent {
337
354
displayedColumns = [ 'before' , 'name' , 'weight' ] ;
338
- dataSource = new ElementDataSource ( ) ;
355
+ dataSource : ElementDataSource ;
356
+
357
+ renderData ( ) {
358
+ this . dataSource = new ElementDataSource ( ) ;
359
+ }
339
360
}
340
361
341
362
const testCases : ReadonlyArray < [ Type < BaseTestComponent > , string ] > = [
@@ -369,7 +390,7 @@ describe('CDK Popover Edit', () => {
369
390
afterEach ( ( ) => {
370
391
// The overlay container's `ngOnDestroy` won't be called between test runs so we need
371
392
// to call it ourselves, in order to avoid leaking containers between tests and potentially
372
- // throwing `querySelector` calls.
393
+ // throwing off `querySelector` calls.
373
394
overlayContainer . ngOnDestroy ( ) ;
374
395
} ) ;
375
396
@@ -411,6 +432,21 @@ describe('CDK Popover Edit', () => {
411
432
expect ( component . hoverContentStateForRow ( 1 ) ) . toBe ( HoverContentState . ON ) ;
412
433
} ) ) ;
413
434
435
+ it ( 'shows the hover content if the data changes after initialization' , fakeAsync ( ( ) => {
436
+ fixture . componentInstance . renderData ( ) ;
437
+ fixture . detectChanges ( ) ;
438
+
439
+ const row = component . getRows ( ) [ 0 ] ;
440
+ row . dispatchEvent ( new Event ( 'mouseover' , { bubbles : true } ) ) ;
441
+ row . dispatchEvent ( new Event ( 'mousemove' , { bubbles : true } ) ) ;
442
+
443
+ tick ( 20 ) ;
444
+ row . dispatchEvent ( new Event ( 'mousemove' , { bubbles : true } ) ) ;
445
+ tick ( 50 ) ;
446
+
447
+ expect ( component . hoverContentStateForRow ( 0 ) ) . toBe ( HoverContentState . ON ) ;
448
+ } ) ) ;
449
+
414
450
it ( 'shows hover content for the focused row and makes the rows above and below focusable' ,
415
451
fakeAsync ( ( ) => {
416
452
expect ( component . hoverContentStateForRow ( 1 ) ) . toBe ( HoverContentState . OFF ) ;
@@ -930,7 +966,12 @@ cdkPopoverEditTabOut`, fakeAsync(() => {
930
966
}
931
967
} ) ;
932
968
933
- function createElementData ( ) {
969
+ interface ChemicalElement {
970
+ name : string ;
971
+ weight : number ;
972
+ }
973
+
974
+ function createElementData ( ) : ChemicalElement [ ] {
934
975
return [
935
976
{ name : 'Hydrogen' , weight : 1.007 } ,
936
977
{ name : 'Helium' , weight : 4.0026 } ,
0 commit comments