rsuite
Version:
A suite of react components
433 lines (357 loc) • 8.56 kB
text/less
@import '../../styles/common';
@import '../../Loader/styles/mixin';
@import 'mixin';
//
// Table
// --------------------------------------------------
// Table Content
.rs-table {
position: relative;
overflow: hidden;
&-column-resizing {
cursor: ew-resize;
user-select: none;
}
&-row {
overflow: hidden;
position: absolute;
height: 36px;
width: 100%;
top: 0;
&.virtualized {
.pointer-event-none();
}
}
&-row-expanded {
position: absolute;
height: 46px;
bottom: 0;
width: 100%;
z-index: 4;
border-top: 1px solid var(--rs-table-border-color);
padding: 10px;
background-color: var(--rs-bg-card);
}
&-hover &-row:hover &-cell-group {
background-color: var(--rs-bg-card);
}
&-hover &-row:hover &-cell {
background-color: var(--rs-bg-card);
}
&-row-header {
background-color: var(--rs-bg-card);
}
&-row-header &-cell {
background-color: var(--rs-bg-card);
}
&-row-header &-cell-group-shadow {
z-index: @zindex-table-row-cell-group-shadow;
box-shadow: none;
}
&-hover &-row:not(&-row-header):hover,
&-hover &-row:hover &-cell-group,
&-hover &-row:hover &-cell {
background-color: var(--rs-state-hover-bg);
}
&-hover &-row-header:hover &-cell-group,
&-hover &-row-header:hover &-cell {
background-color: var(--rs-bg-card);
}
// The thead
&-header-row-wrapper {
z-index: @zindex-table-header-row-wrapper;
position: relative;
font-size: 12px;
color: var(--rs-text-secondary);
}
&-affix-header {
z-index: @zindex-table-header-row-wrapper+1;
visibility: hidden;
&.fixed {
visibility: visible;
}
}
&-body-row-wrapper {
position: relative;
overflow: hidden;
z-index: @zindex-table-body-row-wrapper;
}
&-body-info {
width: 100%;
text-align: center;
top: 50%;
position: absolute;
margin-top: -20px;
line-height: 40px;
.icon {
margin: 0 10px;
}
&-wheel-area {
width: 100%;
}
}
&-body-wheel-area {
width: 100%;
}
&-loader-wrapper {
position: absolute;
height: 100%;
width: 100%;
background-color: var(--rs-loader-backdrop);
opacity: 0;
transition: opacity 0.2s ease-in;
.pointer-event-none();
}
&-loader {
width: 100%;
text-align: center;
top: 50%;
position: absolute;
margin-top: -20px;
line-height: 40px;
&-icon {
.set-side-length(@loader-default-diameter);
.loader-spin();
display: inline-block;
position: relative;
margin-right: @loader-content-spin-spacing-horizontal;
// Make sure loader vertical-align center
padding-top: 3px;
}
}
&-loading &-loader-wrapper {
visibility: visible;
opacity: 1;
pointer-events: auto;
// When loading cover scrollbar.
z-index: 1;
}
&-cell {
height: 36px;
display: block;
overflow: hidden;
position: absolute;
white-space: normal;
background-color: var(--rs-bg-card);
border-bottom: 1px solid var(--rs-table-border-color);
&.first {
border-left-width: 0;
}
&-wrap1 {
display: table;
}
&-wrap2 {
display: table-row;
}
&-wrap3 {
display: table-cell;
vertical-align: middle;
}
&-content {
padding: @table-cell-padding-y @table-cell-padding-x;
.ellipsis();
}
&-header &-content {
padding: @table-header-padding-y @table-header-padding-x;
line-height: @table-header-line-height;
}
&-header {
&-sort-wrapper {
cursor: pointer;
margin-left: @table-header-sort-wrapper-margin-left;
display: inline-block;
}
&-icon-sort {
color: var(--rs-table-sort);
font-size: 16px;
line-height: @table-header-line-height;
}
}
&-rowspan {
border-bottom: 1px solid var(--rs-table-border-color) ;
}
}
&-cell-full-text {
&:hover {
z-index: 1 ;
width: auto ;
box-shadow: inset @table-cell-hover-color 0px 0px 2px;
.rs-table-cell-content {
width: auto ;
}
}
}
&-cell-header-sortable &-cell-content {
cursor: pointer;
}
&-column-resize-spanner {
.column-resize-spanner();
box-sizing: content-box;
&::after,
&::before {
content: ' ';
position: absolute;
width: 0;
height: 0;
margin: auto;
bottom: 0;
top: 0;
display: none;
}
&::before {
border-style: dashed solid dashed dashed;
border-color: transparent var(--rs-table-resize) transparent transparent;
border-width: @table-column-resize-spanner-triangle-side-length;
right: 4px;
}
&::after {
border-style: dashed dashed dashed solid;
border-color: transparent transparent transparent var(--rs-table-resize);
border-width: @table-column-resize-spanner-triangle-side-length;
left: 4px;
}
}
// Table not resizing , header should show resize-spanner .
&:not(&-column-resizing) &-cell-header &-cell:hover ~ &-column-resize-spanner,
&:not(&-column-resizing) &-column-resize-spanner:hover {
background-color: var(--rs-table-resize);
&::before,
&::after {
display: block;
}
}
&-cell-group {
&-fixed-right,
&-fixed-left {
position: absolute;
z-index: @zindex-table-cell-group-fixed;
background-color: var(--rs-bg-card);
}
&-shadow,
&-left-shadow {
box-shadow: 3px 0 5px var(--rs-table-shadow) /* rtl:ignore */;
}
&-right-shadow {
box-shadow: -3px 0 5px var(--rs-table-shadow) /* rtl:ignore */;
}
}
&-mouse-area {
display: none;
background-color: var(--rs-table-resize);
left: -1px;
top: 0;
position: absolute;
width: 1px;
z-index: @zindex-table-mouse-area;
> span {
.column-resize-spanner();
background-color: var(--rs-table-resize);
position: absolute;
left: (-1 * (@table-column-resize-spanner-width / 2));
}
}
&-word-wrap &-cell-content {
white-space: normal;
}
&-bordered {
border: 1px solid var(--rs-table-border-color);
}
&-cell-bordered &-cell {
border-right: 1px solid var(--rs-table-border-color);
}
&-column-group {
position: absolute;
left: 0;
right: 0;
top: 0;
width: 100%;
&-header {
border-bottom: 1px solid var(--rs-table-border-color);
position: absolute;
width: 100%;
&-content {
display: table-cell;
padding: 10px;
}
}
&-cell {
position: absolute;
border-right: 1px solid var(--rs-table-border-color);
}
}
}
.rs-table:not(.rs-table-has-rowspan) .rs-table-row {
border-bottom: 1px solid var(--rs-table-border-color);
}
// Tree Table
.rs-table-cell-expand-wrapper {
margin-right: 10px;
display: inline-block;
cursor: pointer;
}
.rs-table-cell-expand-icon {
cursor: pointer;
outline: none;
font-size: 16px;
}
// Scrollbar
.rs-table-scrollbar {
background-color: var(--rs-table-scrollbar-track);
position: absolute;
transition: background @table-scrollbar-timing-duration linear,
transform @table-scrollbar-timing-duration linear;
opacity: 0.6;
// Make sure Scrollbar on the loader.
z-index: 1;
&-hide {
display: none;
}
&-handle {
position: absolute;
background-color: var(--rs-table-scrollbar-thumb);
border-radius: 4px;
}
&-pressed {
z-index: 1;
}
&-pressed &-handle {
background-color: var(--rs-table-scrollbar-thumb-active);
}
&-horizontal {
width: 100%;
height: @table-scrollbar-width;
bottom: 0;
&.fixed {
position: fixed;
}
}
&-horizontal &-handle {
height: @table-scrollbar-handle-width;
left: 0 /* rtl:ignore */;
top: @table-scrollbar-handle-gap;
}
&-pressed&-horizontal:hover,
&-horizontal:hover {
transform-origin: center bottom;
transform: scaleY(1.3);
}
&-vertical {
top: 0;
right: 0;
width: @table-scrollbar-width;
// Reserve scroll bar position.
bottom: @table-scrollbar-width;
background-color: var(--rs-table-scrollbar-vertical-track);
}
&-vertical &-handle {
min-height: 20px;
width: @table-scrollbar-handle-width;
top: 0;
left: @table-scrollbar-handle-gap;
}
&-pressed&-vertical:hover,
&-vertical:hover {
transform-origin: right center;
transform: scaleX(1.3);
}
}