amis2/packages/amis-ui/scss/components/_table2.scss
HongYang 67e196793a feat: table2&combo主题配置 (#6523)
* feat: table2主题适配

* feat: combo组件主题适配

* feat: table2增加图标和自定义列主题配置

---------

Co-authored-by: hongyang03 <hongyang03@baidu.com>
2023-04-10 11:04:01 +08:00

963 lines
22 KiB
SCSS

.#{$ns}Table2 {
position: relative;
border-radius: var(--Table-borderRadius);
&.#{$ns}Table-bordered {
border-width: var(--Table-borderWidth) var(--Table-borderWidth) 0
var(--Table-borderWidth);
border-style: solid;
border-color: var(--Table-borderColor);
border-collapse: inherit;
.#{$ns}Table-table {
> thead > tr > th,
> tbody > tr > td,
> tfoot > tr > td {
border-right: var(--Table-borderWidth) solid var(--Table-borderColor);
&:last-child {
border-right: none;
}
}
}
.#{$ns}Table-footer {
border-bottom: var(--Table-borderWidth) solid var(--Table-borderColor);
}
.#{$ns}Table-title {
border-bottom: var(--Table-borderWidth) solid var(--Table-borderColor);
}
}
&.#{$ns}Table-large {
.#{$ns}Table-table {
> thead > tr {
> th {
padding: var(--table-size-large-paddingTop)
var(--table-size-large-paddingRight)
var(--table-size-large-paddingBottom)
var(--table-size-large-paddingLeft);
}
}
> tbody > tr {
> td,
> th {
padding: var(--table-size-large-paddingTop)
var(--table-size-large-paddingRight)
var(--table-size-large-paddingBottom)
var(--table-size-large-paddingLeft);
}
}
> tfoot > tr {
> td {
padding: var(--table-size-large-paddingTop)
var(--table-size-large-paddingRight)
var(--table-size-large-paddingBottom)
var(--table-size-large-paddingLeft);
}
}
}
.#{$ns}TableCell-filterBtn {
right: calc(
var(--table-size-large-paddingRight) - var(--TableCell-filterBtn-width) /
2
);
}
}
&.#{$ns}Table-small {
.#{$ns}Table-table {
> thead > tr {
> th {
padding: var(--table-size-small-paddingTop)
var(--table-size-small-paddingRight)
var(--table-size-small-paddingBottom)
var(--table-size-small-paddingLeft);
}
}
> tbody > tr {
> td,
> th {
padding: var(--table-size-small-paddingTop)
var(--table-size-small-paddingRight)
var(--table-size-small-paddingBottom)
var(--table-size-small-paddingLeft);
}
}
> tfoot > tr {
> td {
padding: var(--table-size-small-paddingTop)
var(--table-size-small-paddingRight)
var(--table-size-small-paddingBottom)
var(--table-size-small-paddingLeft);
}
}
}
.#{$ns}TableCell-filterBtn {
right: calc(
var(--table-size-small-paddingRight) - var(--TableCell-filterBtn-width) /
2
);
}
}
.#{$ns}Table-title,
.#{$ns}Table-footer {
color: var(--table-title-color);
font-size: var(--table-title-fontSize);
font-weight: var(--table-title-fontWeight);
line-height: var(--table-title-lineHeight);
background: var(--Table-heading-bg);
padding: var(--table-title-paddingTop) var(--table-title-paddingRight)
var(--table-title-paddingBottom) var(--table-title-paddingLeft);
}
.#{$ns}Table-header {
padding: var(--Table-toolbar-marginY) var(--Table-toolbar-marginX);
&.#{$ns}Table-sticky-holder {
position: sticky;
z-index: 3;
background: var(--Table-bg);
}
}
.#{$ns}Table-toolbar {
@include clearfix();
display: flex;
margin: 0 var(--Table-toolbar-marginX) var(--Table-toolbar-marginY);
flex-wrap: wrap;
.#{$ns}DropDown {
&-menuItem {
height: auto;
.#{$ns}Checkbox {
display: flex;
align-items: center;
}
}
}
}
.#{$ns}Table-header + .#{$ns}Table-toolbar {
padding-top: 0;
}
.#{$ns}Table-content {
min-height: 0.01%;
overflow-x: auto;
transform: translateZ(0);
th {
position: relative;
}
}
.#{$ns}Table-table {
width: 100%;
min-width: 100%;
margin-bottom: 0;
font-size: var(--Table-fontSize);
color: var(--Table-color);
font-weight: var(--table-body-fontWeight);
line-height: var(--table-body-lineHeight);
background: var(--Table-bg);
border-spacing: 0;
border-collapse: collapse;
border: none;
& th,
& td {
text-align: left;
}
& th.text-center,
& td.text-center,
& th[colspan],
& td[colspan] {
text-align: center;
}
& th.text-right,
& td.text-right {
text-align: right;
}
> thead > tr {
> th {
background: var(--Table-thead-bg);
padding: var(--table-paddingTop) var(--table-paddingRight)
var(--table-paddingBottom) var(--table-paddingLeft);
&:first-child {
padding-left: var(--TableCell--edge-paddingX-default);
}
&.#{$ns}Table-cell-last {
padding-right: var(--TableCell--edge-paddingX-default);
}
&:not(.#{$ns}Table-cell-last) {
border-right: var(--Table-thead-borderWidth) solid
var(--Table-thead-borderColor);
}
&.#{$ns}Table-row-expand-icon-cell {
border-right: 0;
}
font-size: var(--Table-thead-fontSize);
color: var(--Table-thead-color);
font-weight: var(--table-header-fontWeight);
line-height: var(--table-header-lineHeight);
white-space: nowrap;
.#{$ns}Remark {
margin-left: var(--gap-xs);
position: relative;
top: 2px;
}
.#{$ns}Table-head-cell-wrapper {
display: flex;
}
}
}
> thead > tr:not(:last-child) {
border-bottom: var(--Table-borderWidth) solid var(--Table-borderColor);
}
> tbody > tr {
position: relative;
border-bottom: var(--Table-borderWidth) solid var(--Table-borderColor);
&.#{$ns}Table-summary-row {
> td {
background: var(--Table-thead-bg);
}
}
> th {
background: var(--Table-thead-bg);
color: var(--Table-thead-color);
font-weight: var(--table-header-fontWeight);
line-height: var(--table-header-lineHeight);
white-space: nowrap;
border-right: var(--Table-thead-borderWidth) solid
var(--Table-thead-borderColor);
}
> td,
> th {
padding: var(--table-paddingTop) var(--table-paddingRight)
var(--table-paddingBottom) var(--table-paddingLeft);
&:first-child {
padding-left: var(--TableCell--edge-paddingX-default);
}
&:last-child {
padding-right: var(--TableCell--edge-paddingX-default);
}
}
.#{$ns}Table-cell-wrapper-prefix {
display: flex;
.#{$ns}Table-expandBtn {
margin-right: 5px;
}
}
.#{$ns}Table-cell-height-large {
height: var(--TableCell-line-height-large);
line-height: var(--TableCell-line-height-large);
overflow: hidden;
}
.#{$ns}Table-cell-height-middle {
height: var(--TableCell-line-height-middle);
line-height: var(--TableCell-line-height-middle);
overflow: hidden;
}
@if var(--Table-strip-bg) !=transparent {
background: var(--table-body-bg-color);
&.#{$ns}Table-tr--odd {
background: var(--Table-strip-bg);
}
}
&.#{$ns}Table-tr--hasItemAction:hover {
cursor: pointer;
}
&:hover,
&.is-hovered {
background: var(--Table-onHover-bg);
border-color: var(--Table-onHover-borderColor);
color: var(--Table-onHover-color);
& + tr {
border-color: var(--Table-onHover-borderColor);
}
}
&.is-checked {
background: var(--Table-onChecked-bg);
border-color: var(--Table-onChecked-borderColor);
color: var(--Table-onChecked-color);
& + tr {
border-color: var(--Table-onChecked-borderColor);
}
}
&.is-moved,
&.is-modified {
background: var(--Table-onModified-bg);
border-color: var(--Table-onModified-borderColor);
color: var(--Table-onModified-color);
& + tr {
border-color: var(--Table-onModified-borderColor);
}
}
&.is-summary {
background: var(--Table-thead-bg);
color: var(--Table-thead-color);
font-weight: var(--table-header-fontWeight);
line-height: var(--table-header-lineHeight);
}
&.bg-light {
@include color-variant($light, 2%, 3%, 3%, 5%);
color: $text-color;
}
&.bg-dark {
@include color-variant($dark, 5%, 10%, 5%, 10%);
@include font-variant($dark);
}
&.bg-black {
@include color-variant($black, 5%, 10%, 5%, 10%);
@include font-variant($black);
}
&.bg-primary {
@include color-variant($primary, 5%, 10%, 5%, 10%);
@include font-variant($primary);
}
&.bg-success {
@include color-variant($success, 5%, 10%, 5%, 10%);
@include font-variant($success);
}
&.bg-info {
@include color-variant($info, 5%, 10%, 5%, 10%);
@include font-variant($info);
}
&.bg-warning {
@include color-variant($warning, 5%, 10%, 5%, 10%);
@include font-variant($warning);
}
&.bg-danger {
@include color-variant($danger, 5%, 10%, 5%, 10%);
@include font-variant($danger);
}
&.is-dragging {
opacity: var(--Table-onDragging-opacity);
}
}
@for $i from 2 through 10 {
tr.#{$ns}Table-tr--#{$i}th.is-expanded {
.#{$ns}Table-expandCell:before {
right: px2rem(7px) + px2rem(-18px) * ($i - 1);
}
}
tr.#{$ns}Table-tr--#{$i}th {
.#{$ns}Table-expandBtn {
position: relative;
right: -(px2rem(18px)) * ($i - 1);
}
.#{$ns}Table-expandCell + td {
position: relative;
&::before {
content: '';
position: absolute;
width: px2rem(1px);
top: 0;
bottom: 0;
left: px2rem(-8px) + px2rem(18px) * ($i - 2);
height: auto;
background: var(--Table-tree-borderColor);
}
&::after {
content: '';
position: absolute;
height: px2rem(1px);
top: 50%;
left: px2rem(-8px) + px2rem(18px) * ($i - 2);
width: px2rem(10px);
background: var(--Table-tree-borderColor);
}
padding-left: px2rem(18px) * $i - px2rem(18px);
}
}
tr.#{$ns}Table-tr--#{$i}th.is-expandable {
.#{$ns}Table-expandCell + td {
padding-left: px2rem(18px) * ($i - 1);
}
}
tr.#{$ns}Table-tr--#{$i}th.is-last:not(.is-expanded) {
.#{$ns}Table-expandCell + td {
&::before {
height: 50%;
bottom: auto;
}
}
}
}
> thead > tr > th.#{$ns}Table-checkCell,
> tbody > tr > td.#{$ns}Table-checkCell {
border-right: 0;
white-space: nowrap;
.#{$ns}Checkbox {
margin: 0;
}
}
> thead > tr > th.#{$ns}Table-expandCell,
> tbody > tr > td.#{$ns}Table-expandCell {
border-right: 0;
width: px2rem(1px);
padding-right: 0;
}
> thead > tr > th.#{$ns}Table-dragCell,
> tbody > tr > td.#{$ns}Table-dragCell {
border-right: 0;
width: px2rem(1px);
padding-right: 0;
cursor: move;
> svg {
vertical-align: middle;
}
}
> tbody > tr > td.#{$ns}Table-expandCell {
position: relative;
@for $i from 1 through 7 {
.#{$ns}Table-divider-#{$i} {
position: absolute;
width: px2rem(1px);
top: 0;
bottom: 0;
height: 100%;
background: var(--Table-tree-borderColor);
right: px2rem(7px) + px2rem(-18px) * ($i - 1);
}
}
}
> tbody > tr.is-expanded > td.#{$ns}Table-expandCell {
&::before {
content: '';
position: absolute;
width: px2rem(1px);
top: 50%;
bottom: 0;
right: px2rem(7px);
height: auto;
background: var(--Table-tree-borderColor);
}
}
> thead > tr > th.#{$ns}TableCell--sortable {
padding-right: calc(
var(--TableCell-paddingX) + var(--TableCell-sortBtn-width)
);
position: relative;
}
> thead > tr > th.#{$ns}TableCell--searchable {
padding-right: calc(
var(--TableCell-paddingX) + var(--TableCell-searchBtn-width)
);
position: relative;
}
> thead > tr > th.#{$ns}TableCell--filterable {
padding-right: calc(
var(--TableCell-paddingX) + var(--TableCell-filterBtn-width)
);
position: relative;
}
> tbody > tr.#{$ns}Table-row-disabled {
background: var(--TableRow-onDisabled-bg);
color: var(--TableRow-onDisabled-color);
}
> tbody
> tr:not(.#{$ns}Table-row-disabled)
> td.#{$ns}Table-cell-row-hover {
background: var(--Table-onHover-bg);
border-color: var(--Table-onHover-borderColor);
color: var(--Table-onHover-color);
}
> thead > tr > th.#{$ns}Table-cell-fix-left-last,
> tbody > tr > td.#{$ns}Table-cell-fix-left-last,
> tfoot > tr > td.#{$ns}Table-cell-fix-left-last {
&:after {
position: absolute;
top: 0;
right: 0;
bottom: -1px;
width: 30px;
transform: translate(100%);
transition: box-shadow 0.3s;
content: '';
pointer-events: none;
}
}
> thead > tr > th.#{$ns}Table-cell-fix-right-first,
> tbody > tr > td.#{$ns}Table-cell-fix-right-first,
> tfoot > tr > td.#{$ns}Table-cell-fix-right-last {
&:after {
position: absolute;
top: 0;
bottom: -1px;
left: 0;
width: 30px;
transform: translate(-100%);
transition: box-shadow 0.3s;
content: '';
pointer-events: none;
}
}
> tbody > tr > td.#{$ns}Table-cell-expand-icon-cell {
text-align: center;
.#{$ns}Table-row-indent {
height: 1px;
}
}
> tbody > tr.#{$ns}Table-expanded-row > td {
background: var(--Table-onHover-bg);
}
> tfoot > tr {
border-bottom: var(--Table-borderWidth) solid var(--Table-borderColor);
> td {
padding: var(--table-paddingTop) var(--table-paddingRight)
var(--table-paddingBottom) var(--table-paddingLeft);
background: var(--Table-thead-bg);
}
}
}
.#{$ns}Table-container {
.#{$ns}Table-header {
padding: 0;
}
}
&.#{$ns}Table-ping-left {
.#{$ns}Table-table {
> thead > tr > th.#{$ns}Table-cell-fix-left-last,
> tbody > tr > td.#{$ns}Table-cell-fix-left-last,
> tfoot > tr > td.#{$ns}Table-cell-fix-left-last {
&:after {
box-shadow: var(--Table-fixedLeftLast-boxShadow);
}
}
> tbody > tr:not(.#{$ns}Table-row-disabled) {
> td.#{$ns}Table-cell-fix-left {
border-right: none;
}
> td.#{$ns}Table-cell-fix-left:not(.#{$ns}Table-cell-row-hover) {
background: #fff;
}
}
> tfoot > tr > td:not(:last-child) {
&.#{$ns}Table-cell-fix-left-last {
border-right: none;
}
}
> thead > tr > th:not(:last-child):not(:first-child) {
&.#{$ns}Table-cell-fix-left-last {
border-right: none;
}
}
}
}
&.#{$ns}Table-ping-right {
.#{$ns}Table-table {
> thead > tr > th.#{$ns}Table-cell-fix-right-first,
> tbody > tr > td.#{$ns}Table-cell-fix-right-first,
> tfoot > tr > td.#{$ns}Table-cell-fix-right-first {
&:after {
box-shadow: var(--Table-fixedRightFirst-boxShadow);
}
}
> tbody > tr:not(.#{$ns}Table-row-disabled) {
> td.#{$ns}Table-cell-fix-right {
border-right: none;
}
> td.#{$ns}Table-cell-fix-right:not(.#{$ns}Table-cell-row-hover) {
background: #fff;
}
}
}
&:not(.#{$ns}Table-bordered) {
.#{$ns}Table-table {
> thead > tr > th.#{$ns}Table-cell-fix-right-first-prev {
border-right: none;
}
> thead > tr > th:not(:last-child) {
&.#{$ns}Table-cell-fix-right-first {
border-right: none;
}
}
}
}
}
&.#{$ns}Table-resizable {
.#{$ns}Table-table {
> thead > tr > th {
position: relative;
.#{$ns}Table-thead-resizable {
position: absolute;
width: 7px;
right: -4px;
top: 0;
bottom: 0;
user-select: none;
cursor: col-resize;
z-index: 3000;
}
}
}
}
.#{$ns}Table-loading {
padding: var(--Table-loading-padding);
text-align: center;
}
.#{$ns}TableCell-sortBtn {
cursor: pointer;
width: var(--TableCell-sortBtn-width);
height: 100%;
vertical-align: middle;
position: static;
display: inline-block;
transform: none;
color: var(--icon-color);
margin-left: var(--TableCell-icon-gap);
&:hover {
color: var(--icon-onHover-color);
}
&--up svg,
&--down svg,
&--default svg {
color: inherit;
width: 13px;
height: 13px;
}
&--up,
&--down,
&--default {
display: none;
z-index: 2;
font-style: normal;
&.is-active {
display: inline-block;
}
}
&--default {
&.is-active {
color: var(--table-icon-color);
&:hover {
color: var(--table-icon-hover-color);
}
}
}
&--up,
&--down {
&.is-active {
color: var(--TableCell-sortBtn--onActive-color);
}
}
}
.#{$ns}TableCell-searchBtn {
cursor: pointer;
color: var(--table-icon-color);
margin-left: var(--TableCell-icon-gap);
svg {
width: 12px;
height: 12px;
}
&:hover {
color: var(--table-icon-hover-color);
}
&.is-active {
color: var(--TableCell-searchBtn--onActive-color);
}
}
.#{$ns}TableCell-searchPopOver {
border: none;
min-width: px2rem(320px);
max-width: px2rem(640px);
.#{$ns}Panel {
margin: 0;
}
}
.#{$ns}TableCell-filterBtn {
cursor: pointer;
width: var(--TableCell-filterBtn-width);
height: 100%;
vertical-align: middle;
position: static;
display: inline-block;
transform: none;
color: var(--table-icon-color);
margin-left: var(--TableCell-icon-gap);
svg {
width: 13px;
height: 13px;
}
&:hover {
color: var(--table-icon-hover-color);
}
&.is-active {
color: var(--TableCell-filterBtn--onActive-color);
}
.#{$ns}Remark {
display: inline;
}
}
.#{$ns}TableCell-filterPopOver {
border: none;
width: px2rem(160px);
.#{$ns}DropDown-menu {
margin: 0;
padding: 0;
.#{$ns}DropDown-divider {
height: var(--TableCell-filterPopOver-dropDownItem-height);
line-height: var(--TableCell-filterPopOver-dropDownItem-height);
padding: var(--TableCell-filterPopOver-dropDownItem-padding);
background: var(--white);
margin: 0;
&:hover {
background: var(--light);
color: var(--primary);
}
&.is-selected {
background: var(--light);
color: var(--primary);
}
.#{$ns}Checkbox {
width: 100%;
margin: 0;
}
}
}
.#{$ns}DropDown-multiple-menu {
text-align: center;
border-top: 1px solid var(--Table-borderColor);
.#{$ns}Button {
margin: 0 5px;
padding: 0 10px;
}
&:hover {
background: none;
}
}
}
.#{$ns}TableCell-selectionBtn {
cursor: pointer;
margin-left: 4px;
svg.icon {
transform: rotate(270deg);
font-size: 12px;
}
}
.#{$ns}TableCell-selectionPopOver {
.#{$ns}DropDown-menu {
margin: 0;
padding: 0;
}
}
&.#{$ns}Table-expandBtn {
position: relative;
z-index: 1;
color: var(--Table-expandBtn-color);
display: inline-flex;
justify-content: center;
align-items: center;
width: px2rem(14px);
line-height: 1;
height: 16px;
> svg {
display: inline-block;
text-align: center;
cursor: pointer;
transition: transform ease-in-out var(--animation-duration),
top ease-in-out var(--animation-duration);
position: relative;
transform-origin: 50% 50%;
width: px2rem(10px);
height: px2rem(10px);
top: 0;
}
&.is-active > svg {
transform: rotate(90deg);
}
&:hover {
text-decoration: none;
}
}
.#{$ns}Table-table > tbody > tr:hover .#{$ns}Table-dragBtn,
.#{$ns}Table-table > tbody > tr.is-dragging .#{$ns}Table-dragBtn,
.#{$ns}Table-table > tbody > tr.is-drop-allowed .#{$ns}Table-dragBtn {
visibility: visible;
}
.fake-hide {
visibility: hidden;
position: absolute;
}
.#{$ns}Table-badge {
position: absolute;
top: 0;
left: 0;
}
.table-sort-default {
content: var(--table-sort-icon);
}
.table-sort-up {
content: var(--table-sort-up-icon);
}
.table-sort-down {
content: var(--table-sort-down-icon);
}
.table-filter-icon {
content: var(--table-filter-icon);
}
.table-search-icon {
content: var(--table-search-icon);
}
}
.#{$ns}InputTable-toolbar {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-between;
}
.#{$ns}InputTable-pager {
margin-left: auto;
}
.#{$ns}OperationField {
margin: px2rem(-3px);
> .#{$ns}Button,
> .#{$ns}Button--disabled-wrap > .#{$ns}Button {
margin: px2rem(3px);
}
> .#{$ns}Button--disabled-wrap > .#{$ns}Button--link {
padding: 0;
}
> .#{$ns}Button--link {
padding: 0;
margin-right: px2rem(10px);
}
}