uui-components/src/table/DataTableRowContainer.module.scss (56 lines of code) (raw):
/*
Row z-indexes layout.
Left fixed: 5
Center
Right fixed: 5
Cell:
Overlay
* borders can overlay cell on top, impossible to overlay bottom cells because position: sticky creates isolation context:
Hover: 1
Focus: 2
Invalid: 3
DropMarker: 10
*/
.container {
position: relative;
display: flex;
align-items: stretch;
background: var(--uui-dt-row-bg);
}
.section {
display: flex;
border-bottom: var(--uui-dt-row-border-width) solid transparent;
background: var(--uui-dt-row-bg);
background-clip: content-box;
box-sizing: border-box;
&:has(:global(.uui-table-cell-selection-in-progress)) {
cursor: crosshair;
}
}
.scrolling-section {
position: relative;
align-items: stretch;
}
.fixed-columns-section-left,
.fixed-columns-section-right {
position: sticky;
z-index: 5;
}
.fixed-columns-section-left {
inset-inline-start: 0;
// Compensate negative padding of cells to overlap borders
// W/o this, we'll have additional --uui-cell-border-width pixels at the right
border-inline-end: var(--uui-dt-cell-border-width) solid transparent;
}
.fixed-columns-section-right {
inset-inline-end: 0;
}
@mixin scroll-shadow($position) {
position: absolute;
top: 0;
bottom: 0;
#{$position}: -5px;
width: 5px;
pointer-events: none;
background: var(--uui-dt-#{$position}-shadow);
opacity: 0;
}
:global(.uui-scroll-shadow-left) {
@include scroll-shadow('inset-inline-start');
}
:global(.uui-scroll-shadow-right) {
@include scroll-shadow('inset-inline-end');
}
.groupColumnsWrapper {
display: flex;
flex-direction: row;
}
:global(.uui-table-column-group-wrapper) {
display: flex;
flex-direction: column;
}