@@ -124,67 +124,105 @@ export const gridStyles = css`
124124 color : var (--vaadin-grid-header-text-color , var (--vaadin-text-color ));
125125 }
126126
127+ /* Rows */
128+
127129 [part ~= 'row' ] {
128130 --_row-background-color : var (--vaadin-grid-row-background-color , var (--vaadin-background-color ));
131+ --_row-background-image : linear-gradient (var (--_row-background-color ), var (--_row-background-color ));
132+
129133 display : grid;
130134 grid-template-columns : var (--_template-columns );
131- grid-template-rows : min-content 4px ;
132135 width : 100% ;
133136 box-sizing : border-box;
134137 margin : 0 ;
135138 position : relative;
139+ }
140+
141+ [part ~= 'row' ]: not (: focus-within ) {
142+ --_non-focused-row-none : none;
143+ }
144+
145+ [part ~= 'row' ][loading ] [part ~= 'body-cell' ] ::slotted (vaadin-grid-cell-content ) {
146+ visibility : hidden;
147+ }
136148
149+ [part ~= 'row' ]: where (: not (# sizer )) {
137150 & ::before {
138151 content : '' ;
139- display : none ;
152+ inset : 0 ;
140153 position : absolute;
141- box-sizing : border-box;
142- grid-row : 1 / -1 ;
143154 grid-column : 1 / -1 ;
144- inset : calc (var (--_row-border-width ) * -1 ) 0 0 0 ;
145- background-image : var (--_selected-background-image );
146155 background-color : var (--_row-background-color );
156+ background-image : var (--_selected-background-image , none);
147157 border-block : var (--_row-border-width ) solid var (--_border-color );
148158 }
149-
150- & : empty {
151- height : 100% ;
152- }
153159 }
154160
155- [part ~= 'row ' ]: not (: focus-within ) {
156- --_non-focused-row-none : none ;
161+ [column-rendering = 'lazy' ] [ part ~= 'body-cell ' ]: not ([ frozen ]) : not ([ frozen-to-end ] ) {
162+ transform : translateX ( var ( --_grid-lazy-columns-start )) ;
157163 }
158164
159- [part ~= 'row' ][ loading ] [ part ~= 'body-cell' ] :: slotted ( vaadin-grid-cell-content ) {
160- visibility : hidden ;
165+ # items [part ~= 'row' ]: empty {
166+ height : 100 % ;
161167 }
162168
163169 [part ~= 'body-row' ] {
164- & ::before {
165- display : block;
166- }
167-
168170 & : focus ,
169171 & : focus-within {
170172 z-index : 4 ;
171173
172- & : not ([part ~= 'selected-row' ])::before {
173- border-color : transparent;
174- background-clip : padding-box;
174+ & : not ([part ~= 'selected-row' ]): not ([part ~= 'first-row' ])::before {
175+ inset-block-start : var (--_row-border-width );
175176 }
177+
178+ & : not ([part ~= 'selected-row' ]): not ([part ~= 'last-row' ])::before {
179+ inset-block-end : var (--_row-border-width );
180+ }
181+ }
182+
183+ & : not ([part ~= 'first-row' ])::before {
184+ inset-block-start : calc (var (--_row-border-width ) * -1 );
176185 }
177186
178- & [ selected ] {
179- z-index : 3 ;
187+ & : not ([ part ~= 'last-row' ]) {
188+ padding-bottom : var ( --_row-border-width ) ;
180189 }
181190 }
182191
192+ # table [has-header ] [part ~= 'first-row' ] {
193+ padding-top : var (--_row-border-width );
194+ }
195+
196+ # table [has-footer ] [part ~= 'last-row' ] {
197+ padding-bottom : var (--_row-border-width );
198+ }
199+
200+ # header [part ~= 'row' ]: not (: last- child),
201+ # footer [part ~= 'row' ]: not (: last-child ) {
202+ padding-bottom : var (--_row-border-width );
203+ }
204+
205+ /* Selected row */
206+
207+ [part ~= 'selected-row' ] {
208+ --_selected-background-color : var (
209+ --vaadin-grid-row-selected-background-color ,
210+ color-mix (in srgb, currentColor 8% , transparent)
211+ );
212+ --_selected-background-image : linear-gradient (var (--_selected-background-color ), var (--_selected-background-color ));
213+ z-index : 3 ;
214+
215+ & ::before {
216+ /* inset-block-start: calc(var(--_row-border-width) * -1); */
217+ }
218+ }
219+
220+ /* Cells */
221+
183222 [part ~= 'cell' ] {
184- grid-row-start : 1 ;
185- grid-column-end : span var (--_colspan , 1 );
186223 padding : 0 ;
187224 box-sizing : border-box;
225+ grid-column-end : span var (--_colspan , 1 );
188226 background : var (--vaadin-grid-cell-background , var (--vaadin-background-color ));
189227 }
190228
@@ -198,8 +236,8 @@ export const gridStyles = css`
198236 position : relative;
199237 align-items : center;
200238 white-space : nowrap;
201- z-index : 1 ;
202239 border-inline : var (--_column-border-width ) var (--_border-color );
240+ z-index : 1 ;
203241
204242 & : focus {
205243 z-index : 4 ;
@@ -219,48 +257,22 @@ export const gridStyles = css`
219257 border-left-style : none;
220258 }
221259
222- /* Row borders */
223- # header {
224- /* padding-bottom: var(--_row-border-width);
225- margin-bottom: calc(var(--_row-border-width) * -1); */
226- }
227-
228- # header [part ~= 'row' ],
229- # footer [part ~= 'row' ] {
230- & ::before {
231- display : block;
232- }
233- }
234-
235- [part ~= 'first-row-cell' ] {
236- margin-top : 0 ;
237- }
238- [part ~= 'last-header-row-cell' ] {
239- border-bottom : 0 ;
240- }
241-
242- [part ~= 'body-cell' ]: not ([part ~= 'last-row-cell' ]),
243- [part ~= 'body-cell' ]: not ([part ~= 'last-row-cell' ]) + [part ~= 'details-cell' ] {
244- /* padding-bottom: var(--_row-border-width); */
245- }
246-
247- [part ~= 'body-cell' ] {
260+ [part ~= 'body-row' ] {
248261 --_highlight-background-color : var (--vaadin-grid-row-highlight-background-color , transparent);
249262 --_highlight-background-image : linear-gradient (
250263 var (--_highlight-background-color ),
251264 var (--_highlight-background-color )
252265 );
266+ }
267+
268+ [part ~= 'body-cell' ] {
253269 background :
254- var (--_hover-background-image , none) padding -box,
270+ var (--_hover-background-image , none) border -box,
255271 var (--_selected-background-image , none) border-box,
256- var (--_highlight-background-image ) padding -box,
272+ var (--_highlight-background-image ) border -box,
257273 var (--vaadin-grid-cell-background-color , var (--_row-background-color )) border-box;
258274 }
259275
260- [column-rendering = 'lazy' ] [part ~= 'body-cell' ]: not ([frozen ]): not ([frozen-to-end ]) {
261- transform : translateX (var (--_grid-lazy-columns-start ));
262- }
263-
264276 /* Variant: wrap cell contents */
265277
266278 : host ([theme ~= 'wrap-cell-content' ]) [part ~= 'cell' ]: not ([part ~= 'details-cell' ]) {
@@ -281,21 +293,9 @@ export const gridStyles = css`
281293
282294 /* Raise highlighted rows above others */
283295
284- /* @container style(--vaadin-grid-row-odd-background-color) {
285- [part~='odd-row'] {
286- z-index: 1;
287- }
288- } */
289-
290296 /* Row hover */
291297 @media (any-hover : hover) {
292- /* @container style(--vaadin-grid-row-hover-background-color) {
293- [part~='body-row']:hover {
294- z-index: 2;
295- }
296- } */
297-
298- [part ~= 'body-row' ]: hover [part ~= 'body-cell' ] {
298+ [part ~= 'body-row' ]: hover {
299299 --_hover-background-color : var (--vaadin-grid-row-hover-background-color , transparent);
300300 --_hover-background-image : linear-gradient (var (--_hover-background-color ), var (--_hover-background-color ));
301301 }
@@ -323,23 +323,6 @@ export const gridStyles = css`
323323 will-change : transform;
324324 }
325325
326- /* Selected row */
327- [part ~= 'selected-row' ] {
328- --_selected-background-color : var (
329- --vaadin-grid-row-selected-background-color ,
330- color-mix (in srgb, currentColor 8% , transparent)
331- );
332- --_selected-background-image : linear-gradient (var (--_selected-background-color ), var (--_selected-background-color ));
333- }
334-
335- [part ~= 'selected-row-cell' ] {
336- /* border-top-style: solid; */
337- }
338-
339- [part ~= 'selected-row-cell' ]: not ([part ~= 'first-row-cell' ]) {
340- /* margin-top: calc(var(--_row-border-width) * -1); */
341- }
342-
343326 /* Empty state */
344327 # scroller : not ([empty-state ]) # emptystatebody ,
345328 # scroller [empty-state ] # items {
0 commit comments