11import { expect } from '@vaadin/chai-plugins' ;
2- import { aTimeout , fixtureSync , nextRender } from '@vaadin/testing-helpers' ;
2+ import { aTimeout , fixtureSync , nextFrame , nextRender } from '@vaadin/testing-helpers' ;
33import sinon from 'sinon' ;
44import '@polymer/polymer/lib/elements/dom-repeat.js' ;
55import '@vaadin/text-field/vaadin-text-field.js' ;
@@ -519,7 +519,10 @@ describe('form layout', () => {
519519 beforeEach ( ( ) => {
520520 container = fixtureSync ( `
521521 <div hidden>
522- <vaadin-form-layout></vaadin-form-layout>
522+ <vaadin-form-layout>
523+ <div>Foo</div>
524+ <div>Bar</div>
525+ </vaadin-form-layout>
523526 </div>
524527 ` ) ;
525528 layout = container . querySelector ( 'vaadin-form-layout' ) ;
@@ -546,6 +549,35 @@ describe('form layout', () => {
546549 ev . animationName = 'foo' ;
547550 layout . dispatchEvent ( ev ) ;
548551 } ) ;
552+
553+ it ( 'should update layout when its parent becomes visible' , async ( ) => {
554+ layout . responsiveSteps = [ { columns : 1 } ] ;
555+ await nextRender ( ) ;
556+
557+ container . hidden = false ;
558+
559+ // Wait for intersection observer
560+ await nextFrame ( ) ;
561+ await nextFrame ( ) ;
562+
563+ expect ( parseFloat ( getParsedWidth ( layout . children [ 0 ] ) . percentage ) ) . to . be . closeTo ( 100 , 0.1 ) ;
564+ expect ( parseFloat ( getParsedWidth ( layout . children [ 1 ] ) . percentage ) ) . to . be . closeTo ( 100 , 0.1 ) ;
565+ } ) ;
566+
567+ it ( 'should change layout opacity when its parent becomes visible' , async ( ) => {
568+ // Wait for intersection observer
569+ await nextFrame ( ) ;
570+ await nextFrame ( ) ;
571+ expect ( layout . $ . layout . style . opacity ) . to . equal ( '0' ) ;
572+
573+ container . hidden = false ;
574+
575+ // Wait for intersection observer
576+ await nextFrame ( ) ;
577+ await nextFrame ( ) ;
578+
579+ expect ( layout . $ . layout . style . opacity ) . to . equal ( '' ) ;
580+ } ) ;
549581 } ) ;
550582
551583 describe ( 'mutations' , ( ) => {
0 commit comments