11import { useState } from 'react' ;
2- import type { SplitterLayoutPropTypes } from '../..' ;
2+ import { FlexBox , SplitterLayoutPropTypes , Text } from '../..' ;
33import { Button , Label , SplitterElement , SplitterLayout } from '../..' ;
44import { cypressPassThroughTestsFactory } from '@/cypress/support/utils' ;
55
@@ -107,7 +107,7 @@ describe('SplitterLayout', () => {
107107 ) ;
108108 cy . findByTestId ( 'btn' ) . click ( ) ;
109109 cy . get ( '[role="separator"]' ) . first ( ) . click ( ) ;
110- // fallback click to prevent fuzzyness
110+ // fallback click to prevent flakyness
111111 cy . get ( '[role="separator"]' )
112112 . first ( )
113113 . click ( )
@@ -129,5 +129,75 @@ describe('SplitterLayout', () => {
129129 cy . findByTestId ( 'sl' ) . should ( 'not.be.visible' ) . should ( 'exist' ) ;
130130 } ) ;
131131
132+ [ true , false ] . forEach ( ( vertical ) => {
133+ it . only ( `controlled width (${ vertical ? 'vertical' : 'horizontal' } )` , ( ) => {
134+ const resize = cy . spy ( ) . as ( 'resize' ) ;
135+ const TestComp = ( ) => {
136+ const [ size0 , setSize0 ] = useState ( '200px' ) ;
137+ const [ size1 , setSize1 ] = useState ( '200px' ) ;
138+ const [ size2 , setSize2 ] = useState ( '200px' ) ;
139+ const [ size3 , setSize3 ] = useState ( '200px' ) ;
140+ const setter = [ setSize0 , setSize1 , setSize2 , setSize3 ] ;
141+ return (
142+ < >
143+ < SplitterLayout
144+ vertical = { vertical }
145+ style = { { height : '600px' } }
146+ onResize = { ( e ) => {
147+ resize ( e ) ;
148+ e . areas . forEach ( ( item ) => {
149+ setter [ Number ( item . area . dataset . index ) ] ( item . size + 'px' ) ;
150+ } ) ;
151+ } }
152+ >
153+ < SplitterElement size = { size0 } data-index = { 0 } >
154+ < FlexBox style = { { height : '100%' , width : '100%' } } alignItems = "Center" justifyContent = "Center" >
155+ < Text > Content 1</ Text >
156+ </ FlexBox >
157+ </ SplitterElement >
158+ < SplitterElement size = { size1 } data-index = { 1 } >
159+ < FlexBox style = { { height : '100%' , width : '100%' } } alignItems = "Center" justifyContent = "Center" >
160+ < Text style = { { whiteSpace : 'pre-line' } } > { `Content 2
161+ with
162+ multi
163+ lines
164+ ` } </ Text >
165+ </ FlexBox >
166+ </ SplitterElement >
167+ < SplitterElement size = { 'auto' } data-index = { 2 } >
168+ < FlexBox style = { { height : '100%' , width : '100%' } } alignItems = "Center" justifyContent = "Center" >
169+ < Text >
170+ Content 3 with long text: Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
171+ eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et
172+ accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est
173+ Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
174+ eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et
175+ accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est
176+ Lorem ipsum dolor sit amet."
177+ </ Text >
178+ </ FlexBox >
179+ </ SplitterElement >
180+ < SplitterElement data-index = { 3 } size = { size3 } >
181+ < FlexBox style = { { height : '100%' , width : '100%' } } alignItems = "Center" justifyContent = "Center" >
182+ < Text > Content 4</ Text >
183+ </ FlexBox >
184+ </ SplitterElement >
185+ </ SplitterLayout >
186+ </ >
187+ ) ;
188+ } ;
189+
190+ cy . mount ( < TestComp /> ) ;
191+
192+ cy . get ( '[data-index="0"]' ) . as ( 'se0' ) ;
193+ cy . get ( '[data-index="1"]' ) . as ( 'se1' ) ;
194+ cy . get ( '[data-index="2"]' ) . as ( 'se2' ) ;
195+ cy . get ( '[data-index="3"]' ) . as ( 'se3' ) ;
196+ cy . findAllByRole ( 'separator' ) . each ( ( $splitter , index ) => {
197+ cy . wrap ( $splitter ) . as ( `splitter${ index } ` ) ;
198+ } ) ;
199+ } ) ;
200+ } ) ;
201+
132202 cypressPassThroughTestsFactory ( SplitterLayout , { children : < SplitterElement > Content</ SplitterElement > } ) ;
133203} ) ;
0 commit comments