@alifd/next
Version:
A configurable component library for web built on React.
716 lines (656 loc) • 19.8 kB
Plain Text
@charset "UTF-8";
@import "../core/index-noreset.scss";
@import "scss/variable";
@import "scss/mixin";
/* put your code here */
#{$table-prefix} {
@include box-sizing;
position: relative;
border-top-left-radius: $table-header-corner-top;
border-top-right-radius: $table-header-corner-top;
border-bottom-left-radius: $table-header-corner-bottom;
border-bottom-right-radius: $table-header-corner-bottom;
border-top: $table-normal-border-width $table-normal-border-style $table-normal-border-color;
border-left: $table-normal-border-width $table-normal-border-style $table-normal-border-color;
#{$table-prefix}-header tr:first-child th:first-child {
border-top-left-radius: $table-header-corner-top;
}
#{$table-prefix}-header tr:first-child th:last-child {
border-top-right-radius: $table-header-corner-top;
}
#{$table-prefix}-header tr:last-child th:first-child {
border-bottom-left-radius: $table-header-corner-bottom;
}
#{$table-prefix}-header tr:last-child th:last-child {
border-bottom-right-radius: $table-header-corner-bottom;
}
&#{$table-prefix}-layout-fixed {
overflow: auto;
table {
table-layout: fixed;
}
}
&#{$table-prefix}-layout-auto table {
table-layout: auto;
}
&#{$table-prefix}-small {
th {
#{$table-prefix}-cell-wrapper {
padding: $table-size-s-header-padding-top $table-size-s-header-padding-left;
}
}
td {
#{$table-prefix}-cell-wrapper {
padding: $table-size-s-cell-padding-top $table-size-s-cell-padding-left;
}
}
#{$table-prefix}-prerow #{$table-prefix}-cell-wrapper {
padding: $s-2 $s-2;
}
}
table {
border-collapse: separate;
border-spacing: 0;
width: 100%;
background: $table-row-bg;
border-top-left-radius: $table-header-corner-top;
border-top-right-radius: $table-header-corner-top;
border-bottom-left-radius: $table-header-corner-bottom;
border-bottom-right-radius: $table-header-corner-bottom;
tr:first-child td {
border-top-width: 0;
}
}
th {
padding: 0;
background: $table-th-bg;
color: $table-th-color;
text-align: left;
font-weight: $table-th-font-weight;
border-right: $table-normal-border-width $table-normal-border-style $table-normal-border-color;
border-bottom: $table-normal-border-width $table-normal-border-style $table-normal-border-color;
#{$table-prefix}-cell-wrapper {
padding: $table-header-padding-top $table-header-padding-left;
overflow: hidden;
text-overflow: ellipsis;
word-break: break-all;
}
&#{$table-prefix}-prerow #{$table-prefix}-cell-wrapper {
padding: $s-3 $s-4;
}
// 用户通过Column参数配置word-break
&#{$table-prefix}-word-break-word #{$table-prefix}-cell-wrapper {
word-break: break-word;
}
&#{$table-prefix}-fix-left,
&#{$table-prefix}-fix-right {
z-index: 1;
}
}
&-affix {
z-index: 1;
overflow: hidden;
}
&-stickylock {
#{$table-prefix}-affix {
z-index: 9;
}
}
&-header-resizable {
position: relative;
#{$table-prefix}-resize-handler {
position: absolute;
right: -5px;
top: 0;
bottom: 0;
width: 10px;
background: transparent;
cursor: ew-resize;
&::after {
position: absolute;
display: block;
content: ' ';
width: $line-2;
height: 100%;
right: 50%;
}
&:hover::after {
z-index: 1;
background: $color-brand1-6;
}
}
}
&#{$table-prefix}-lock-left &-header-resizable,
&#{$table-prefix}-lock-right &-header-resizable {
#{$table-prefix}-resize-handler {
cursor: initial;
&:hover::after {
z-index: -1;
}
}
}
td {
padding: 0;
border-right: $table-normal-border-width $table-normal-border-style $table-normal-border-color;
border-bottom: $table-normal-border-width $table-normal-border-style $table-normal-border-color;
#{$table-prefix}-cell-wrapper {
padding: $table-cell-padding-top $table-cell-padding-left;
overflow: hidden;
text-overflow: ellipsis;
word-break: break-all;
.#{$css-prefix}icon-arrow-down.#{$css-prefix}table-tree-arrow,
.#{$css-prefix}icon-arrow-right.#{$css-prefix}table-tree-arrow,
#{$table-prefix}-tree-placeholder {
margin-right: $table-header-icon-margin-left;
outline: 0;
cursor: pointer;
}
.#{$css-prefix}icon-arrow-right.#{$css-prefix}table-tree-arrow {
@include icon-size($table-tree-expanded-icon-size);
&::before {
content: $table-tree-fold-icon-content;
}
}
.#{$css-prefix}icon-arrow-down.#{$css-prefix}table-tree-arrow {
@include icon-size($table-tree-expanded-icon-size);
&::before {
content: $table-tree-unfold-icon-content;
}
}
}
&#{$table-prefix}-prerow #{$table-prefix}-cell-wrapper {
padding: $s-3 $s-4;
}
// 用户通过Column参数配置word-break
&#{$table-prefix}-word-break-word #{$table-prefix}-cell-wrapper {
word-break: break-word;
}
}
#{$table-prefix}-expanded,
#{$table-prefix}-selection {
#{$table-prefix}-cell-wrapper {
overflow: visible;
}
}
&.no-header table tr:first-child td {
border-top-width: 1px;
}
&.only-bottom-border {
border-width: 0;
th {
border-width: 0 0 $table-normal-border-width 0;
}
td {
border-width: 0 0 $table-normal-border-width 0;
}
table tr td:first-child,
table tr th:first-child {
border-left-width: 0;
}
@include table-last-child-border(0);
}
&-loading {
display: block;
}
&.zebra {
tr:nth-child(odd) td {
background: $table-td-normal;
}
tr:nth-child(even) td {
background: $table-td-gray;
}
#{$table-prefix}-row.hovered td {
background: $table-row-hover-bg;
color: $table-row-hover-color;
}
#{$table-prefix}-cell.hovered {
background: $table-row-hover-bg;
color: $table-row-hover-color;
}
#{$table-prefix}-row.selected td {
background: $table-row-selected-bg;
color: $table-row-selected-color;
}
}
&-empty {
color: $table-empty-color;
padding: $table-empty-padding 0;
text-align: center;
}
&-expanded-row {
> td {
border-width: 0 0 $table-normal-border-width 0;
&:first-child {
border-left-width: $table-normal-border-width;
}
&:last-child {
border-right-width: $table-normal-border-width;
}
}
&:last-child > td {
border-bottom-width: $table-normal-border-width;
}
#{$table-prefix} {
border-top: 0;
border-left: 0;
th, td {
border-right: $table-normal-border-width $table-normal-border-style $table-normal-border-color;
}
&.only-bottom-border {
th, td {
border-right: 0;
}
}
& .last td {
border-bottom: 0;
}
& td.last,
& th:last-child {
border-right: 0;
}
// &-expanded-area:after {
// position: absolute;
// top: 0;
// right: 0;
// bottom: 0;
// border-right: $table-normal-border-width $table-normal-border-style $table-normal-border-color;
// content: "";
// }
}
}
// &.only-bottom-border #{$table-prefix}-expanded-row #{$table-prefix}-expanded-area:after {
// border-right: 0;
// }
&-filter-footer {
margin: 10px 10px 0;
button {
margin-right: 5px;
}
}
&-row {
transition: all $motion-duration-immediately $motion-linear;
background: $table-row-bg;
color: $table-row-color;
&.hidden {
display: none;
}
&.hovered {
background: $table-row-hover-bg;
color: $table-row-hover-color;
}
&.selected {
background: $table-row-selected-bg;
color: $table-row-selected-color;
}
}
&-cell {
&.hovered {
background: $table-row-hover-bg;
color: $table-row-hover-color;
}
}
&-tree-placeholder {
display: inline-block;
width: 12px;
}
}
.last {
#{$table-prefix}-expanded-row {
td {
border-bottom-width: 1px;
}
}
}
#{$table-prefix}-body,
#{$table-prefix}-header {
overflow: auto;
font-size: $table-th-font-size;
}
#{$table-prefix}-column-resize-proxy {
position: absolute;
top: 0;
bottom: 0;
width: 0;
border-left: $line-2 solid $color-brand1-6;
z-index: 10;
display: none;
}
#{$table-prefix}-header {
margin-bottom: -20px;
padding-bottom: 20px;
border-top-left-radius: $table-header-corner-top;
border-top-right-radius: $table-header-corner-top;
border-bottom-left-radius: $table-header-corner-bottom;
border-bottom-right-radius: $table-header-corner-bottom;
overflow: -moz-scrollbars-none;
-ms-overflow-style: none;
scrollbar-width: none;
&::-webkit-scrollbar {
display: none;
}
}
#{$table-prefix}-body {
font-size: $table-body-font-size;
position: relative;
}
#{$table-prefix}-fixed {
border-right: $table-normal-border-width $table-normal-border-style $table-normal-border-color;
border-bottom: $table-normal-border-width $table-normal-border-style $table-normal-border-color;
table {
table-layout: fixed;
}
#{$table-prefix}-header {
background: $table-th-bg;
}
@include table-border(0);
&.only-bottom-border #{$table-prefix}-body tr:last-child td {
border-bottom-width: $table-normal-border-width;
}
&#{$table-prefix}-group {
@include table-border($table-normal-border-width);
}
&#{$table-prefix}-lock-left {
@include table-last-child-border($table-normal-border-width);
}
}
#{$table-prefix}-lock {
#{$table-prefix}-body {
overflow-x: auto;
overflow-y: visible;
}
}
#{$table-prefix}-group {
border-width: 0;
&.only-bottom-border {
#{$table-prefix}-body table,
#{$table-prefix}-header table {
border-left: 0;
}
#{$table-prefix}-header table,
#{$table-prefix}-body table,
#{$table-prefix}-body table#{$table-prefix}-row {
border-top: 0;
}
#{$table-prefix}-body #{$table-prefix}-group-footer td {
border-bottom: 0;
}
}
#{$table-prefix}-body {
margin-top: $table-group-split;
table {
border-top: $table-normal-border-width $table-normal-border-style $table-normal-border-color;
border-left: $table-normal-border-width $table-normal-border-style $table-normal-border-color;
margin-bottom: $table-group-split;
tr:first-child td {
border-top-width: 1px;
}
&:last-of-type {
margin-bottom: 0;
}
}
}
#{$table-prefix}-header {
table {
border-top: $table-normal-border-width $table-normal-border-style $table-normal-border-color;
border-left: $table-normal-border-width $table-normal-border-style $table-normal-border-color;
}
}
#{$table-prefix}-group-header {
td {
background: $table-group-th-bg;
color: $table-group-th-color;
&:first-child {
border-top-left-radius: $table-group-header-corner-top;
border-bottom-left-radius: $table-group-header-corner-bottom;
}
&:last-child {
border-top-right-radius: $table-group-header-corner-top;
border-bottom-right-radius: $table-group-header-corner-bottom;
}
}
}
#{$table-prefix}-group-footer {
td {
background: $table-group-footer-bg;
color: $table-group-footer-color;
&:first-child {
border-top-left-radius: $table-group-footer-corner-top;
border-bottom-left-radius: $table-group-footer-corner-bottom;
}
&:last-child {
border-top-right-radius: $table-group-footer-corner-top;
border-bottom-right-radius: $table-group-footer-corner-bottom;
}
}
}
#{$table-prefix}-row.hovered,
#{$table-prefix}-row.selected {
background: $table-row-bg;
color: $table-row-color;
}
}
#{$table-prefix}-lock {
position: relative;
table {
table-layout: fixed;
}
}
#{$table-prefix}-header-inner {
overflow: unset;
}
#{$table-prefix}-header-fixer {
content: " ";
border-top-right-radius: $table-header-corner-top;
border-bottom-right-radius: $table-header-corner-bottom;
width: 15px;
background: inherit;
position: absolute;
right: 0;
height: 100%;
top: 0;
}
#{$table-prefix}-wrap-empty {
#{$table-prefix}-lock-left,
#{$table-prefix}-lock-right {
td {
border: none;
}
#{$table-prefix}-empty {
display: none;
}
}
> #{$table-prefix}-inner > #{$table-prefix}-body > table {
table-layout: fixed;
}
}
#{$table-prefix}-lock-left,
#{$table-prefix}-lock-right {
position: absolute;
left: 0;
top: 0;
z-index: 1;
border: 0;
transition: box-shadow .3s ease;
overflow: hidden;
table {
width: auto;
}
#{$table-prefix}-body {
overflow-y: scroll;
overflow-x: hidden;
margin-right: -20px;
padding-right: 0;
// @include table-last-child-border($table-normal-border-width);
}
#{$table-prefix}-header {
// @include table-last-child-border($table-normal-border-width);
}
&.shadow {
@include table-last-child-border(0);
}
}
#{$table-prefix}-lock-right {
right: 0;
left: auto;
table tr td:first-child,
table tr th:first-child {
border-left-width: 1px;
}
&.shadow {
box-shadow: -2px 0 3px rgba(0, 0, 0, .12);
}
}
#{$table-prefix}-lock-left {
&.shadow {
box-shadow: 2px 0 3px rgba(0, 0, 0, .12);
}
}
#{$table-prefix}-filter {
line-height: 1;
}
#{$table-prefix}-sort {
cursor: pointer;
position: relative;
width: 16px;
display: inline-block;
line-height: 1;
&:focus {
outline: 0;
}
& > a::before {
content: ' ';
display: inline-block;
vertical-align: middle;
}
.#{$css-prefix}icon {
position: absolute;
left: -2px;
@include icon-size($table-sort-icon-size);
color: $table-sort-color;
}
.current .#{$css-prefix}icon {
color: $table-sort-color-current;
}
.#{$css-prefix}icon-ascending {
left: 2px;
}
}
#{$table-prefix}-filter {
cursor: pointer;
width: 20px;
display: inline-block;
&:focus {
outline: 0;
}
.#{$css-prefix}icon {
@include icon-size($table-filter-icon-size);
color: $table-sort-color;
}
#{$table-prefix}-filter-active {
color: $color-brand1-6;
}
}
#{$table-prefix}-filter-menu {
.#{$css-prefix}menu-content {
max-height: 220px;
overflow: auto;
}
}
#{$table-prefix}-header-icon {
margin-left: $table-header-icon-margin-left;
}
#{$table-prefix}-expanded-ctrl {
cursor: pointer;
&:focus {
outline: 0;
}
&.disabled {
color: $table-expanded-ctrl-disabled-color;
}
.#{$css-prefix}table-expand-unfold {
@include icon-size($table-expanded-icon-size);
&::before {
content: $table-expand-unfold-icon-content;
}
}
.#{$css-prefix}table-expand-fold {
@include icon-size($table-expanded-icon-size);
&::before {
content: $table-expand-fold-icon-content;
}
}
}
#{$table-prefix} {
&-fix-left,
&-fix-right {
background: inherit;
position: sticky;
z-index: 1;
// 修复旧ie内核下的 Edge,锁列边框消失的问题
background-clip: padding-box;
}
&-ping-left {
#{$table-prefix}-expanded-area #{$table-prefix}-fix-left-last::after {
content: none;
}
#{$table-prefix}-expanded-area #{$table-prefix}-ping-left #{$table-prefix}-fix-left-last,
#{$table-prefix}-fix-left-last {
border-right-width: 0;
&::after {
box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, .15);
position: absolute;
top: 0;
right: 0;
bottom: 0;
width: 30px;
content: '';
pointer-events: none;
transition: box-shadow .3s, -webkit-box-shadow .3s;
transform: translateX(100%);
}
}
}
&-ping-right {
#{$table-prefix}-expanded-area #{$table-prefix}-fix-right-first::after {
content: none;
}
#{$table-prefix}-expanded-area #{$table-prefix}-ping-right #{$table-prefix}-fix-right-first:after,
#{$table-prefix}-fix-right-first:after {
box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, .15);
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 30px;
content: '';
pointer-events: none;
transition: box-shadow .3s, -webkit-box-shadow .3s;
transform: translateX(-100%);
}
}
&-fixed#{$table-prefix}-scrolling-to-right,
&-lock#{$table-prefix}-scrolling-to-right {
&::after {
box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, .15);
position: absolute;
top: 0;
right: -30px;
bottom: 0;
width: 30px;
content: '';
pointer-events: none;
transition: box-shadow .3s, -webkit-box-shadow .3s;
transform: translateX(-100%);
}
// #{$table-prefix}-lock-right {
// border-right: $table-normal-border-width $table-normal-border-style $table-normal-border-color;
// }
}
// &-fixed#{$table-prefix}-ping-right,
&-fixed.only-bottom-border,
// &-lock#{$table-prefix}-ping-right,
&-lock.only-bottom-border {
border-right: 0;
}
}
@import "./rtl.scss";