@@ -121,19 +121,35 @@ export const gridStyles = css`
121121 [part ~= 'reorder-ghost' ] {
122122 font-size : var (--vaadin-grid-header-font-size , 1em );
123123 font-weight : var (--vaadin-grid-header-font-weight , 500 );
124- color : var (--vaadin-grid-text- header-color , var (--vaadin-text-color ));
124+ color : var (--vaadin-grid-header-text -color , var (--vaadin-text-color ));
125125 }
126126
127127 [part ~= 'row' ] {
128- display : flex;
128+ --_row-background-color : var (--vaadin-grid-row-background-color , var (--vaadin-background-color ));
129+ display : grid;
130+ grid-template-columns : var (--_template-columns );
131+ grid-template-rows : min-content 4px ;
129132 width : 100% ;
130133 box-sizing : border-box;
131134 margin : 0 ;
132135 position : relative;
133- }
134136
135- [part ~= 'row' ]: empty {
136- height : 100% ;
137+ & ::before {
138+ content : '' ;
139+ display : none;
140+ position : absolute;
141+ box-sizing : border-box;
142+ grid-row : 1 / -1 ;
143+ grid-column : 1 / -1 ;
144+ inset : calc (var (--_row-border-width ) * -1 ) 0 0 0 ;
145+ background-image : var (--_selected-background-image );
146+ background-color : var (--_row-background-color );
147+ border-block : var (--_row-border-width ) solid var (--_border-color );
148+ }
149+
150+ & : empty {
151+ height : 100% ;
152+ }
137153 }
138154
139155 [part ~= 'row' ]: not (: focus-within ) {
@@ -144,16 +160,31 @@ export const gridStyles = css`
144160 visibility : hidden;
145161 }
146162
147- [column-rendering = 'lazy' ] [part ~= 'body-cell' ]: not ([frozen ]): not ([frozen-to-end ]) {
148- transform : translateX (var (--_grid-lazy-columns-start ));
163+ [part ~= 'body-row' ] {
164+ & ::before {
165+ display : block;
166+ }
167+
168+ & : focus ,
169+ & : focus-within {
170+ z-index : 4 ;
171+
172+ & : not ([part ~= 'selected-row' ])::before {
173+ border-color : transparent;
174+ background-clip : padding-box;
175+ }
176+ }
177+
178+ & [selected ] {
179+ z-index : 3 ;
180+ }
149181 }
150182
151183 [part ~= 'cell' ] {
152- --vaadin- grid-cell-background-color : yellow ;
184+ grid-row-start : 1 ;
153185 padding : 0 ;
154186 box-sizing : border-box;
155187 background : var (--vaadin-grid-cell-background , var (--vaadin-background-color ));
156- border-block : var (--_row-border-width ) var (--_border-color );
157188 }
158189
159190 [part ~= 'body-cell' ],
@@ -166,7 +197,12 @@ export const gridStyles = css`
166197 position : relative;
167198 align-items : center;
168199 white-space : nowrap;
200+ z-index : 1 ;
169201 border-inline : var (--_column-border-width ) var (--_border-color );
202+
203+ & : focus {
204+ z-index : 4 ;
205+ }
170206 }
171207
172208 /* Column borders */
@@ -184,31 +220,40 @@ export const gridStyles = css`
184220
185221 /* Row borders */
186222 # header {
187- padding-bottom : var (--_row-border-width );
188- margin-bottom : calc (var (--_row-border-width ) * -1 );
223+ /* padding-bottom: var(--_row-border-width);
224+ margin-bottom: calc(var(--_row-border-width) * -1); */
189225 }
190226
191- [part ~= 'header-cell' ]: not ([part ~= 'last-header-row-cell' ]),
192- [part ~= 'footer-cell' ]: not ([part ~= 'last-footer-row-cell' ]) {
193- border-bottom-style : solid;
227+ # header [part ~= 'row' ],
228+ # footer [part ~= 'row' ] {
229+ & ::before {
230+ display : block;
231+ }
232+ }
233+
234+ [part ~= 'first-row-cell' ] {
235+ margin-top : 0 ;
236+ }
237+ [part ~= 'last-header-row-cell' ] {
238+ border-bottom : 0 ;
194239 }
195240
196241 [part ~= 'body-cell' ]: not ([part ~= 'last-row-cell' ]),
197242 [part ~= 'body-cell' ]: not ([part ~= 'last-row-cell' ]) + [part ~= 'details-cell' ] {
198- border -bottom-style : solid;
243+ /* padding -bottom: var(--_row-border-width); */
199244 }
200245
201246 /* Grid with header */
202247 # table : has (# header > tr : not ([hidden ])) {
203248 [part ~= 'first-row-cell' ] {
204- border-block-start-style : solid;
249+ /* padding-top: var(--_row-border-width); */
205250 }
206251 }
207252
208253 /* Grid with footer */
209254 # table : has (# footer > tr : not ([hidden ])) {
210255 [part ~= 'last-row-cell' ] {
211- border-block-end-style : solid;
256+ /* padding-bottom: var(--_row-border-width); */
212257 }
213258 }
214259
@@ -219,7 +264,7 @@ export const gridStyles = css`
219264 }
220265
221266 # emptystatecell {
222- border-block : var (--_row-border-width ) solid transparent;
267+ /* border-block: var(--_row-border-width) solid transparent; */
223268 }
224269 }
225270
@@ -233,7 +278,11 @@ export const gridStyles = css`
233278 var (--_hover-background-image , none) padding-box,
234279 var (--_selected-background-image , none) border-box,
235280 var (--_highlight-background-image ) padding-box,
236- var (--vaadin-grid-cell-background-color ) border-box;
281+ var (--vaadin-grid-cell-background-color , var (--_row-background-color )) border-box;
282+ }
283+
284+ [column-rendering = 'lazy' ] [part ~= 'body-cell' ]: not ([frozen ]): not ([frozen-to-end ]) {
285+ transform : translateX (var (--_grid-lazy-columns-start ));
237286 }
238287
239288 /* Variant: wrap cell contents */
@@ -244,31 +293,18 @@ export const gridStyles = css`
244293
245294 /* Variant: row stripes */
246295 [part ~= 'odd-row' ] {
247- --vaadin-grid-cell-background-color : var (--vaadin-grid-row-odd-background-color , var (--vaadin -background-color ));
296+ --vaadin-grid-cell-background-color : var (--vaadin-grid-row-odd-background-color , var (--_row -background-color ));
248297 }
249298
250299 : host ([theme ~= 'row-stripes' ]) [part ~= 'odd-row' ] {
251300 --vaadin-grid-cell-background-color : var (
252301 --vaadin-grid-row-odd-background-color ,
253- color-mix (in srgb, var (--vaadin-text-color ) 4% , var (--vaadin -background-color ))
302+ color-mix (in srgb, var (--vaadin-text-color ) 4% , var (--_row -background-color ))
254303 );
255304 }
256305
257306 /* Raise highlighted rows above others */
258307
259- [part ~= 'selected-row' ] {
260- z-index : 3 ;
261- }
262-
263- [part ~= 'row' ]: focus,
264- [part ~= 'row' ]: focus-within {
265- z-index : 4 ;
266-
267- [part ~= 'cell' ]: not ([part ~= 'selected-row-cell' ]) {
268- border-top-color : transparent;
269- }
270- }
271-
272308 /* @container style(--vaadin-grid-row-odd-background-color) {
273309 [part~='odd-row'] {
274310 z-index: 1;
@@ -321,11 +357,11 @@ export const gridStyles = css`
321357 }
322358
323359 [part ~= 'selected-row-cell' ] {
324- border-top-style : solid;
360+ /* border-top-style: solid; */
325361 }
326362
327363 [part ~= 'selected-row-cell' ]: not ([part ~= 'first-row-cell' ]) {
328- margin-top : calc (var (--_row-border-width ) * -1 );
364+ /* margin-top: calc(var(--_row-border-width) * -1); */
329365 }
330366
331367 /* Empty state */
@@ -605,9 +641,9 @@ export const gridStyles = css`
605641
606642 /* Sizer styles */
607643 # sizer {
608- display : flex;
609644 visibility : hidden;
610645 border : none !important ;
646+ grid-template-rows : none !important ;
611647 }
612648
613649 # sizer [part ~= 'details-cell' ],
0 commit comments