@@ -124,32 +124,18 @@ 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;
136-
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- }
153139 }
154140
155141 [part ~= 'row' ]: not (: focus-within ) {
@@ -160,31 +146,79 @@ export const gridStyles = css`
160146 visibility : hidden;
161147 }
162148
163- [part ~= 'body- row' ] {
149+ [part ~= 'row' ]: where ( : not ( # sizer )) {
164150 & ::before {
165- display : block;
151+ content : '' ;
152+ inset : 0 ;
153+ position : absolute;
154+ grid-column : 1 / -1 ;
155+ background-color : var (--_row-background-color );
156+ background-image : var (--_selected-background-image , none);
157+ border-block : var (--_row-border-width ) solid var (--_border-color );
166158 }
159+ }
160+
161+ # items [part ~= 'row' ]: empty {
162+ height : 100% ;
163+ }
167164
165+ [part ~= 'body-row' ] {
168166 & : focus ,
169167 & : focus-within {
170168 z-index : 4 ;
171169
172- & : not ([part ~= 'selected-row' ])::before {
173- border-color : transparent;
174- background-clip : padding-box;
170+ & : not ([part ~= 'selected-row' ]): not ([part ~= 'first-row' ])::before {
171+ inset-block-start : var (--_row-border-width );
172+ }
173+
174+ & : not ([part ~= 'selected-row' ]): not ([part ~= 'last-row' ])::before {
175+ inset-block-end : var (--_row-border-width );
175176 }
176177 }
177178
178- & [ selected ] {
179- z-index : 3 ;
179+ & : not ([ part ~= 'first-row' ]):: before {
180+ inset-block-start : calc ( var ( --_row-border-width ) * -1 ) ;
180181 }
182+
183+ & : not ([part ~= 'last-row' ]) {
184+ padding-bottom : var (--_row-border-width );
185+ }
186+ }
187+
188+ # table [has-header ] [part ~= 'first-row' ] {
189+ padding-top : var (--_row-border-width );
190+ }
191+
192+ # table [has-footer ] [part ~= 'last-row' ] {
193+ padding-bottom : var (--_row-border-width );
194+ }
195+
196+ # header [part ~= 'row' ]: not (: last- child),
197+ # footer [part ~= 'row' ]: not (: last-child ) {
198+ padding-bottom : var (--_row-border-width );
181199 }
182200
201+ /* Selected row */
202+
203+ [part ~= 'selected-row' ] {
204+ --_selected-background-color : var (
205+ --vaadin-grid-row-selected-background-color ,
206+ color-mix (in srgb, currentColor 8% , transparent)
207+ );
208+ --_selected-background-image : linear-gradient (var (--_selected-background-color ), var (--_selected-background-color ));
209+ z-index : 3 ;
210+
211+ & ::before {
212+ /* inset-block-start: calc(var(--_row-border-width) * -1); */
213+ }
214+ }
215+
216+ /* Cells */
217+
183218 [part ~= 'cell' ] {
184- grid-row-start : 1 ;
185- grid-column-end : span var (--_colspan , 1 );
186219 padding : 0 ;
187220 box-sizing : border-box;
221+ grid-column-end : span var (--_colspan , 1 );
188222 background : var (--vaadin-grid-cell-background , var (--vaadin-background-color ));
189223 }
190224
@@ -198,8 +232,8 @@ export const gridStyles = css`
198232 position : relative;
199233 align-items : center;
200234 white-space : nowrap;
201- z-index : 1 ;
202235 border-inline : var (--_column-border-width ) var (--_border-color );
236+ z-index : 1 ;
203237
204238 & : focus {
205239 z-index : 4 ;
@@ -219,41 +253,19 @@ export const gridStyles = css`
219253 border-left-style : none;
220254 }
221255
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' ] {
256+ [part ~= 'body-row' ] {
248257 --_highlight-background-color : var (--vaadin-grid-row-highlight-background-color , transparent);
249258 --_highlight-background-image : linear-gradient (
250259 var (--_highlight-background-color ),
251260 var (--_highlight-background-color )
252261 );
262+ }
263+
264+ [part ~= 'body-cell' ] {
253265 background :
254- var (--_hover-background-image , none) padding -box,
266+ var (--_hover-background-image , none) border -box,
255267 var (--_selected-background-image , none) border-box,
256- var (--_highlight-background-image ) padding -box,
268+ var (--_highlight-background-image ) border -box,
257269 var (--vaadin-grid-cell-background-color , var (--_row-background-color )) border-box;
258270 }
259271
@@ -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