@@ -16,6 +16,12 @@ import Button from "../../src/Button.js";
16
16
const ROLE_COLUMN_HEADER = "columnheader" ;
17
17
18
18
describe ( "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
+
19
25
it ( "tests if table is rendered" , ( ) => {
20
26
cy . mount (
21
27
< Table id = "table" >
@@ -57,6 +63,163 @@ describe("Table - Rendering", () => {
57
63
// eslint-disable-next-line cypress/no-unnecessary-waiting
58
64
cy . wait ( 500 ) ;
59
65
} ) ;
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
+ } ) ;
60
223
} ) ;
61
224
62
225
describe ( "Table - Popin Mode" , ( ) => {
0 commit comments