tdesign-react
Version:
TDesign Component for React
337 lines (279 loc) • 8.11 kB
text/less
@import "../../base.less";
@import "./_var.less";
@import "./_mixin.less";
@import "../../mixins/_reset.less";
.@{prefix}-calendar {
.reset;
border: 1px solid @calendar-border-color;
background-color: @calendar-bg;
border-radius: @border-radius-large;
.@{prefix}-is-disabled {
&.@{prefix}-calendar__table-body-cell {
&:hover {
cursor: not-allowed;
}
}
.@{prefix}-calendar__table-body-cell-display {
color: @calendar-body-cell-display-disabled-color;
&:hover {
box-shadow: none;
}
}
}
&--full {
min-width: @calendar-full-min-width;
padding: @calendar-full-padding;
.@{prefix}-calendar__control {
padding: @calendar-control-padding;
}
.@{prefix}-calendar__title {
font: @font-title-large;
flex: 1;
}
.@{prefix}-calendar__panel {
position: relative;
margin-top: @calendar-panel-margin-top;
&-title {
font: @calendar-head-title-font;
color: @calendar-title-color;
position: absolute;
}
}
.@{prefix}-calendar__table {
&-head-cell,
&-body-cell {
margin-right: @calendar-table-margin-right;
position: relative;
}
&-body-cell {
border-top: @calendar-border-size solid @calendar-body-cell-border-color;
padding: @calendar-body-cell-padding;
height: @calendar-body-cell-height;
line-height: @calendar-body-line-height;
display: flex;
flex-direction: column;
align-items: flex-end;
justify-content: flex-start;
margin-left: @calendar-body-cell-margin-left;
transition-duration: @calendar-transition-duration;
transition-property: @calendar-transition-property;
transition-timing-function: @calendar-transition-timing-function;
&-content {
padding: @calendar-body-cell-content-padding;
width: 100%;
box-sizing: border-box;
}
&.@{prefix}-is-checked {
background-color: @calendar-body-cell-check-bg-color;
&:hover {
background-color: @calendar-body-cell-check-bg-color;
}
}
&--now {
border-top: @calendar-border-size solid @calendar-highlight-color;
.@{prefix}-calendar__table-body-cell-display {
color: @calendar-body-cell-display-now-color;
}
}
}
}
.@{prefix}-calendar__footer {
height: @calendar-footer-height;
padding: @calendar-footer-padding;
border-top: 1px solid @calendar-border-color;
}
}
&--card {
width: @calendar-card-width;
border-radius: @border-radius-medium;
padding: @calendar-card-panel-padding;
.@{prefix}-calendar__control {
padding: @calendar-card-calendar-control-padding;
&-section {
width: 100%;
justify-content: flex-start;
&-cell {
&:last-child {
flex: 1;
text-align: right;
display: block;
}
}
}
}
.@{prefix}-calendar__panel {
&.@{prefix}-calendar__panel--month {
height: @calendar-card-calendar-panel-height-month;
margin-top: @calendar-card-panel-margin-top;
}
&.@{prefix}-calendar__panel--year {
height: @calendar-card-calendar-panel-height-year;
margin-top: @calendar-card-panel-margin-top;
.@{prefix}-calendar__table {
&-body {
&-cell {
&-display {
min-width: @calendar-card-cell-value-size-year;
}
}
}
}
}
}
.@{prefix}-calendar__table {
width: @calendar-card-table-size;
height: @calendar-card-table-size;
display: flex;
flex-direction: column;
justify-self: start;
align-items: flex-start;
&-head,
&-body {
&-row {
flex: @calendar-body-row-flex;
background: @calendar-card-head-row-bg;
}
&-cell {
width: @calendar-card-cell-size;
height: @calendar-card-cell-size;
justify-content: center;
font: @calendar-card-body-cell-font;
box-sizing: border-box;
&-display {
width: @calendar-card-cell-value-size;
line-height: @calendar-card-cell-value-size;
}
}
}
&-body {
display: flex;
flex-direction: column;
justify-self: center;
align-items: center;
flex: 1;
&-cell {
justify-content: center;
align-items: center;
&:hover {
background-color: @calendar-bg;
}
&-display {
font: @calendar-card-body-cell-display-font;
padding-top: @calendar-card-body-cell-display-padding;
padding-bottom: @calendar-card-body-cell-display-padding;
text-align: center;
border-radius: @calendar-card-body-cell-display-border-radius;
transition: all @calendar-transition-duration @calendar-transition-timing-function;
&:hover {
box-shadow: inset 0 0 0 1px @calendar-highlight-color;
transition: box-shadow @calendar-transition-duration @calendar-transition-timing-function;
}
}
&--now {
.@{prefix}-calendar__table-body-cell-display {
color: @calendar-highlight-color;
background-color: @calendar-body-cell-check-bg-color;
position: relative;
}
}
}
}
}
.@{prefix}-is-checked {
.@{prefix}-calendar__table-body-cell-display {
background: @calendar-card-cell-value-check-bg;
border-radius: @calendar-card-body-cell-display-border-radius;
color: @calendar-card-cell-value-check-color;
}
}
.@{prefix}-calendar__footer {
height: @calendar-card-footer-height;
padding: @calendar-card-footer-padding;
border-top: 1px solid @calendar-border-color;
}
}
&__control {
display: flex;
justify-content: flex-end;
align-items: center;
&-section {
height: 100%;
display: flex;
justify-content: flex-end;
align-items: center;
&:last-child {
margin-right: 0;
}
&-cell {
height: @calendar-section-height;
margin-right: @calendar-control-section-cell-margin-right;
display: flex;
.@{prefix}-radio-group {
vertical-align: bottom;
}
.@{prefix}-select {
display: inline;
}
&:last-child {
margin-right: 0;
}
}
}
}
&__panel {
box-sizing: border-box;
width: 100%;
}
&__table {
border-collapse: collapse;
border-spacing: 0;
width: 100%;
height: 100%;
&-head,
&-body {
width: 100%;
&-row {
width: 100%;
display: flex;
}
&-cell {
flex: 1;
display: flex;
justify-content: flex-end;
font: @calendar-table-cell-font;
color: @calendar-cell-font-color;
cursor: default;
padding: @calendar-table-cell-padding;
&:last-child {
margin-right: 0;
}
}
}
&-head {
margin-bottom: @calendar-head-margin-bottom;
display: block;
&-row {
padding-bottom: @calendar-header-row-padding;
background: @calendar-head-bg-color;
}
&-cell {
height: @calendar-head-cell-height;
font: @calendar-head-cell-font;
color: @calendar-head-cell-color;
}
}
&-body {
&-cell {
cursor: pointer;
&:hover {
background-color: @calendar-body-cell-hover-bg-color;
transition: background-color @calendar-transition-duration @calendar-transition-timing-function;
}
&-display {
font: @calendar-body-cell-display-font;
color: @calendar-title-color;
}
}
}
}
}