@@ -16,6 +16,12 @@ import Button from "../../src/Button.js";
1616const ROLE_COLUMN_HEADER = "columnheader" ;
1717
1818describe ( "Table - Rendering" , ( ) => {
19+ function checkWidth ( id : string , expectedWidth : number ) {
20+ cy . get ( id ) . then ( $cell => {
21+ expect ( $cell . outerWidth ( ) ) . to . be . equal ( expectedWidth ) ;
22+ } ) ;
23+ } ;
24+
1925 it ( "tests if table is rendered" , ( ) => {
2026 cy . mount (
2127 < Table id = "table" >
@@ -57,6 +63,163 @@ describe("Table - Rendering", () => {
5763 // eslint-disable-next-line cypress/no-unnecessary-waiting
5864 cy . wait ( 500 ) ;
5965 } ) ;
66+
67+ it ( "columns have equal widths width default width" , ( ) => {
68+ cy . mount (
69+ < Table style = "width: 400px;" id = "table" >
70+ < TableHeaderRow slot = "headerRow" >
71+ < TableHeaderCell > < span > ColumnA</ span > </ TableHeaderCell >
72+ < TableHeaderCell > < span > ColumnB</ span > </ TableHeaderCell >
73+ < TableHeaderCell > < span > ColumnC</ span > </ TableHeaderCell >
74+ < TableHeaderCell > < span > ColumnD</ span > </ TableHeaderCell >
75+ </ TableHeaderRow >
76+ < TableRow >
77+ < TableCell > < Label > Cell A</ Label > </ TableCell >
78+ < TableCell > < Label > Cell B</ Label > </ TableCell >
79+ < TableCell > < Label > Cell C</ Label > </ TableCell >
80+ < TableCell > < Label > Cell D</ Label > </ TableCell >
81+ </ TableRow >
82+ </ Table >
83+ ) ;
84+
85+ const expectedWidth = 100 ;
86+ cy . get ( "ui5-table-header-cell" ) . each ( ( $cell ) => {
87+ expect ( $cell . outerWidth ( ) ) . to . be . equal ( expectedWidth ) ;
88+ } ) ;
89+ } ) ;
90+
91+ it ( "columns have width set" , ( ) => {
92+ cy . mount (
93+ < Table style = "width: 200px;" id = "table" >
94+ < TableHeaderRow slot = "headerRow" >
95+ < TableHeaderCell width = "100px" > < span > ColumnA</ span > </ TableHeaderCell >
96+ < TableHeaderCell width = "100px" > < span > ColumnB</ span > </ TableHeaderCell >
97+ < TableHeaderCell width = "100px" > < span > ColumnC</ span > </ TableHeaderCell >
98+ < TableHeaderCell width = "100px" > < span > ColumnD</ span > </ TableHeaderCell >
99+ </ TableHeaderRow >
100+ < TableRow >
101+ < TableCell > < Label > Cell A</ Label > </ TableCell >
102+ < TableCell > < Label > Cell B</ Label > </ TableCell >
103+ < TableCell > < Label > Cell C</ Label > </ TableCell >
104+ < TableCell > < Label > Cell D</ Label > </ TableCell >
105+ </ TableRow >
106+ </ Table >
107+ ) ;
108+
109+ const expectedWidth = 100 ;
110+ cy . get ( "ui5-table-header-cell" ) . each ( ( $cell ) => {
111+ expect ( $cell . outerWidth ( ) ) . to . be . equal ( expectedWidth ) ;
112+ } ) ;
113+ } ) ;
114+
115+ it ( "columns have relative width set" , ( ) => {
116+ cy . mount (
117+ < Table style = "width: 200px;" id = "table" >
118+ < TableHeaderRow slot = "headerRow" >
119+ < TableHeaderCell id = "colA" width = "10%" > < span > ColumnA</ span > </ TableHeaderCell >
120+ < TableHeaderCell id = "colB" width = "25%" > < span > ColumnB</ span > </ TableHeaderCell >
121+ < TableHeaderCell id = "colC" width = "25%" > < span > ColumnC</ span > </ TableHeaderCell >
122+ < TableHeaderCell id = "colD" width = "40%" > < span > ColumnD</ span > </ TableHeaderCell >
123+ </ TableHeaderRow >
124+ < TableRow >
125+ < TableCell > < Label > Cell A</ Label > </ TableCell >
126+ < TableCell > < Label > Cell B</ Label > </ TableCell >
127+ < TableCell > < Label > Cell C</ Label > </ TableCell >
128+ < TableCell > < Label > Cell D</ Label > </ TableCell >
129+ </ TableRow >
130+ </ Table >
131+ ) ;
132+
133+ checkWidth ( "#colA" , 48 ) ;
134+ checkWidth ( "#colB" , 50 ) ;
135+ checkWidth ( "#colC" , 50 ) ;
136+ checkWidth ( "#colD" , 80 ) ;
137+
138+ cy . get ( "ui5-table" ) . then ( $table => {
139+ $table . css ( "width" , "800px" ) ;
140+ } ) ;
141+
142+ checkWidth ( "#colA" , 80 ) ;
143+ checkWidth ( "#colB" , 200 ) ;
144+ checkWidth ( "#colC" , 200 ) ;
145+ checkWidth ( "#colD" , 320 ) ;
146+ } ) ;
147+
148+ it ( "columns have min-width set" , ( ) => {
149+ cy . mount (
150+ < Table style = "width: 800px;" id = "table" >
151+ < TableHeaderRow slot = "headerRow" >
152+ < TableHeaderCell minWidth = "100px" > < span > ColumnA</ span > </ TableHeaderCell >
153+ < TableHeaderCell minWidth = "100px" > < span > ColumnB</ span > </ TableHeaderCell >
154+ < TableHeaderCell minWidth = "100px" > < span > ColumnC</ span > </ TableHeaderCell >
155+ < TableHeaderCell minWidth = "100px" > < span > ColumnD</ span > </ TableHeaderCell >
156+ </ TableHeaderRow >
157+ < TableRow >
158+ < TableCell > < Label > Cell A</ Label > </ TableCell >
159+ < TableCell > < Label > Cell B</ Label > </ TableCell >
160+ < TableCell > < Label > Cell C</ Label > </ TableCell >
161+ < TableCell > < Label > Cell D</ Label > </ TableCell >
162+ </ TableRow >
163+ </ Table >
164+ ) ;
165+
166+ cy . get ( "ui5-table-header-cell" ) . each ( ( $cell ) => {
167+ const expectedWidth = 200 ;
168+ expect ( $cell . outerWidth ( ) ) . to . be . equal ( expectedWidth ) ;
169+ } ) ;
170+
171+ cy . get ( "ui5-table" ) . then ( $table => {
172+ $table . css ( "width" , "400px" ) ;
173+ } ) ;
174+
175+ cy . get ( "ui5-table-header-cell" ) . each ( ( $cell ) => {
176+ const expectedWidth = 100 ;
177+ expect ( $cell . outerWidth ( ) ) . to . be . equal ( expectedWidth ) ;
178+ } ) ;
179+
180+ cy . get ( "ui5-table" ) . then ( $table => {
181+ $table . css ( "width" , "100px" ) ;
182+ } ) ;
183+
184+ cy . get ( "ui5-table-header-cell" ) . each ( ( $cell ) => {
185+ const expectedWidth = 100 ;
186+ expect ( $cell . outerWidth ( ) ) . to . be . equal ( expectedWidth ) ;
187+ } ) ;
188+ } ) ;
189+
190+ it ( "column width settings combined" , ( ) => {
191+ cy . mount (
192+ < Table style = "width: 800px;" id = "table" >
193+ < TableHeaderRow slot = "headerRow" >
194+ < TableHeaderCell id = "colA" minWidth = "50px" > < span > ColumnA</ span > </ TableHeaderCell >
195+ < TableHeaderCell id = "colB" width = "300px" > < span > ColumnB</ span > </ TableHeaderCell >
196+ < TableHeaderCell id = "colC" minWidth = "200px" width = "50%" > < span > ColumnC</ span > </ TableHeaderCell >
197+ < TableHeaderCell id = "colD" width = "2fr" > < span > ColumnD</ span > </ TableHeaderCell >
198+ </ TableHeaderRow >
199+ < TableRow >
200+ < TableCell > < Label > Cell A</ Label > </ TableCell >
201+ < TableCell > < Label > Cell B</ Label > </ TableCell >
202+ < TableCell > < Label > Cell C</ Label > </ TableCell >
203+ < TableCell > < Label > Cell D</ Label > </ TableCell >
204+ </ TableRow >
205+ </ Table >
206+ ) ;
207+
208+ checkWidth ( "#colA" , 50 ) ;
209+ checkWidth ( "#colB" , 300 ) ;
210+ checkWidth ( "#colC" , 400 ) ;
211+ checkWidth ( "#colD" , 50 ) ;
212+
213+ cy . get ( "ui5-table" ) . then ( $table => {
214+ $table . css ( "width" , "200px" ) ;
215+ } ) ;
216+
217+ checkWidth ( "#colA" , 50 ) ;
218+ checkWidth ( "#colB" , 300 ) ;
219+ checkWidth ( "#colC" , 200 ) ;
220+ // 2fr is being ignored
221+ checkWidth ( "#colD" , 48 ) ;
222+ } ) ;
60223} ) ;
61224
62225describe ( "Table - Popin Mode" , ( ) => {
0 commit comments